Форум программистов
 

Восстановите пароль или Зарегистрируйтесь на форуме, о проблемах пишите сюда - alarforum@yandex.ru, проверяйте папку спам!

Вернуться   Форум программистов > IT форум > Общие вопросы по программированию, компьютерный форум
Регистрация

Восстановить пароль
Повторная активизация e-mail

Купить рекламу на форуме - 42 тыс руб за месяц, летом дешевле!

Ответ
 
Опции темы Поиск в этой теме
Старый 22.01.2023, 11:30   #11
сфинкс
Форумчанин
 
Аватар для сфинкс
 
Регистрация: 17.06.2012
Сообщений: 862
По умолчанию

Совместив графические разработки Кот и Xonix Ксоникс
https://www.programmersforum.ru/show...61#post1856161

используя массивы и случайные параметры и координаты
где цвета пока буквами хотя возможен принцип RGB
получается классная визуализация
и думаю столкновения через 2 цикла сделать легко

120 kB

Код:
using System; using System.Drawing; // xonixmult.cs
using System.Windows.Forms; class xonix: Form

{ public static void Main()
  { Application.Run(new xonix());}
    public xonix()

{ Text = "XONIX"; Width = w; Height = h;
BackColor = System.Drawing.Color.Blue;
ForeColor = System.Drawing.Color.Magenta; 
}

public int w=550, h=330;
protected override void OnPaint(PaintEventArgs and)

{ Graphics dav = and.Graphics; int n=13, a=w-40, b=h-40; 
Random rand = new Random(); int[] f = new int[n]; 
int[] x = new int[n]; int[] y = new int[n];
int[] dx = new int[n]; int[] dy = new int[n]; 
int[] c = new int[n];

for (int i=1; i<n; i++) 
{ f[i] = (2+rand.Next(3))*5; c[i] = 1+rand.Next(3);  
x[i] = rand.Next(a); y[i] = rand.Next(b); 
dx[i] = rand.Next(5)-2; dy[i] = rand.Next(5)-3; 
}

for (int k=1; k <300; k++)
for (int i=1; i<n; i++) 

{ dav.DrawEllipse(new Pen(Color.Green,12), x[i]-dx[i],y[i]-dy[i],f[i],f[i]);
 
if (1==c[i]) dav.DrawEllipse(new Pen(Color.Magenta, 12),x[i],y[i],f[i],f[i]);
if (2==c[i]) dav.DrawEllipse(new Pen(Color.Yellow, 12),x[i],y[i],f[i],f[i]);
if (3==c[i]) dav.DrawEllipse(new Pen(Color.Red, 12),x[i],y[i],f[i],f[i]);

System.Threading.Thread.Sleep(1);

if ((x[i] + dx[i] < 1) || (x[i] + dx[i] > a)) dx[i] = -dx[i];
if ((y[i] + dy[i] < 1) || (y[i] + dy[i] > b)) dy[i] = -dy[i];
x[i] += dx[i]; y[i] += dy[i];
}}}

// dav.DrawEllipse(new Pen(Color.FromArgb(0,0,255,0),12), x[i]-dx[i],y[i]-dy[i],f[i],f[i]);
Случайные и Массивы https://programmersforum.ru/showthread.php?t=344371 Учим C# & basic & excel & python https://programmersforum.ru/showthre...=327446&page=5 ничего нерекомендую

Последний раз редактировалось сфинкс; 23.01.2023 в 10:03.
сфинкс вне форума Ответить с цитированием
Старый 26.01.2023, 17:22   #12
сфинкс
Форумчанин
 
Аватар для сфинкс
 
Регистрация: 17.06.2012
Сообщений: 862
По умолчанию

Моя универсальная программа переведена на C#
пока без таймера и без ввода-вывода файлов
тогда позже запишется случайная матрица

Новшества для меня: форматирование текста
и в конце цикл считает внутри себя

Сценарий универсальной программы на странице 1
в принципе ясно по сообщениям

Далее попробую перевести на Python
зато другие читатели могут перевести на C++
и думаю хороший пример заданий студентам
где в 1 абзац решается 1 задача

Код:
using System; // universe.cs
namespace universe
{ class universe
{ static void Main(string[] args)

{ Random rand = new Random(); int i,j; int n=5; 
int[] d = new int[n]; int[] x = new int[n];
int[,] a = new int[n,n]; int[,] y = new int[n,n];

Console.WriteLine("Массив d в строку");
for (i=0; i<n; i++) 
{ d[i] = rand.Next(9); Console.Write("{0} ",d[i]); 
}

Console.WriteLine("\n \nМассив d чётные x=d^2");
for (i=0; i<n; i++) 
  { if (d[i] %2 ==0) x[i] = d[i] * d[i];
    else x[i]=d[i];
Console.WriteLine("{0} {1}", d[i], x[i]);
}

Console.WriteLine("\nМассив x сортировка");
for (i=0; i<n-1; i++) for (j = i+1; j<n; j++) 
if (x[i]>x[j]) { var temp=x[i]; x[i]=x[j]; x[j]=temp;}

Console.Write("и вывод x через while\n");
i=0; while (i < n)
       { Console.Write("{0} ",x[i]); i++; }

Console.WriteLine("\n\nМассив y сумма или нечётная y=d^2");
for (i=0; i<n; i++) 
  { for (j = 0; j<n; j++) 
    { a[i,j]=i+j; 
       if (a[i,j] %2 !=0) y[i,j] = a[i,j] * a[i,j];
       else y[i,j] = a[i,j];
Console.Write("{0} ",y[i,j]); }
Console.WriteLine(); }

Console.WriteLine("\nМассив d минимакс от:");
for (i=0; i<n; i++) Console.Write("{0} ", d[i]); 
Console.WriteLine("\n"); 

int min = d[0]; int max = d[0]; int nmin=0; int nmax=0;
for (i=1; i<n; i++)
  { if (d[i]< min) { min=d[i]; nmin=i;}
    if (d[i]> max) { max=d[i]; nmax=i;}
}
Console.WriteLine("{0} {1}   {2} {3}", min, nmin, max, nmax);

Console.WriteLine("\nСумма d и средний");
double s=0; for (i=-1; i<n-1; s += d[++i]); 
Console.WriteLine("{0} {1:f2}", s, s/n);

Console.ReadKey();
}}}
Universal C#
https://rextester.com/RYGR5556

Результат при n=5
Код:
Массив d в строку
6 0 7 8 5

Массив d чётные x=d^2
6 36
0 0
7 7
8 64
5 5

Массив x сортировка
и вывод x через while
0 5 7 36 64

Массив y сумма или нечётная y=d^2
0 1 2 9 4
1 2 9 4 25
2 9 4 25 6
9 4 25 6 49
4 25 6 49 8

Массив d минимакс от:
6 0 7 8 5

0 1   8 3

Сумма d и средний
26 5,20
Случайные и Массивы https://programmersforum.ru/showthread.php?t=344371 Учим C# & basic & excel & python https://programmersforum.ru/showthre...=327446&page=5 ничего нерекомендую

Последний раз редактировалось сфинкс; 27.01.2023 в 10:37.
сфинкс вне форума Ответить с цитированием
Старый 31.01.2023, 15:15   #13
сфинкс
Форумчанин
 
Аватар для сфинкс
 
Регистрация: 17.06.2012
Сообщений: 862
По умолчанию

Моя универсальная программа переведена на Python

Код:
import random # universe.py
n = 5; d=[1]; a=[1,1]; x=[1]; y=[1,1]

print('Array d in a string')
for i in range (0,n): 
    d[i]=d.append(i)
    x[i]=x.append(i)
    d[i] = random.randrange(0,9)
    print (d[i], end=' ')
    
print('\n\nArray d even x=d^2')
for i in range (0,n): 
    if d[i] % 2 == 0: 
         x[i]=d[i] * d[i]
    else:
         x[i]=d[i] 
    print (d[i], x[i], end=' ')
    print()

print('\nArray x sorting')
for i in range (0,n-1):
    for j in range (i+1,n):
       if x[i] > x[j]:
           temp=x[i]
           x[i]=x[j]
           x[j]=temp
      
i=0; print('and output x via while')
while i < n:
    print (x[i], end=' ')
    i=i+1

print('\n\nArray y sum or odd y=d^2')
a=[[i+j for i in range (n)] for j in range (n)]
y=[[i+j for i in range (n)] for j in range (n)]

for i in range (0,n):
    for j in range (0,n):
        if a[i][j] % 2 != 0:
            y[i][j] = a[i][j] * a[i][j] 
        print ("%2d" % y[i][j], end=' ') 
    print()
print()

dmin = d[1]; dmax = d[1]; nmin=1; nmax=1
for i in range (1,n):
    if d[i]< dmin:
        dmin=d[i]; nmin=i
    if d[i]> dmax: 
        dmax=d[i]; nmax=i

print('Array d minimax from:')
for i in range (0,n): 
    print (d[i], end=' ')

print ('\n', dmin, nmin, '   ', dmax, nmax, end=' ')

s=0; print('\n\nSum d and average')
for i in range (1,n): 
    s=s+d[i]
print(s, s/n, end=' ')
https://rextester.com/VXCJ24727

Плюс создана версия на c++
и отдельно на 5 языках ввод и сохранение на диск
чтобы далее использовать только мои наработки

Плюс графическая программа выше работает без торможения
и вообще следующий шаг: анимация
Случайные и Массивы https://programmersforum.ru/showthread.php?t=344371 Учим C# & basic & excel & python https://programmersforum.ru/showthre...=327446&page=5 ничего нерекомендую

Последний раз редактировалось сфинкс; 31.01.2023 в 15:19.
сфинкс вне форума Ответить с цитированием
Старый 31.01.2023, 22:02   #14
ViktorR
Старожил
 
Регистрация: 23.10.2010
Сообщений: 2,176
По умолчанию

Подумал, что некоторые вещи избыточны, некоторые не оптимальны, ...
Код:
# universe.py
from random import randrange
n = 5

print('Array d in a string')
d = [randrange(0,9) for _ in range(n)]
print(*d, end=' ')
    
print('\n\nArray d even x=d^2')
x = [0] * n
for i in range(n):
    x[i] =  d[i] if d[i] % 2 else d[i]**2
    print(d[i], x[i], end=' ')
    print()

print('\nArray x sorting')
x.sort()
print('and output x')
print(*x)  # вывод результата

print('\n\nArray y sum or odd y=d^2')
a=[[i+j for i in range(n)] for j in range(n)]
y=[[i+j for i in range(n)] for j in range(n)]

for i in range(n):
    for j in range(n):
        if a[i][j] % 2 != 0:
            y[i][j] = a[i][j]**2 
        print ("%2d" % y[i][j], end=' ') 
    print()
print()

# по первому вхождению (как в исходном коде)
dmin = min(d); nmin = d.index(dmin)
dmax = max(d); nmax = d.index(dmax)
print(*d, end=' ')
print()
# по последнему вхождению
print('First\n', dmin, nmin, '   ', dmax, nmax, end=' ')
nmin = n - 1 - d[::-1].index(dmin) # поиск с "хвоста" (в перевёрнутом списке)
nmax = n - 1 - d[::-1].index(dmax)
print()
print('Last\n', dmin, nmin, '   ', dmax, nmax, end=' ')

print('\n\nSum d and average')
s = sum(d)
print(s, s/n, end=' ')
PS:
1. Не следует отделять имя функции от скобок:
Код:
print ('Привет!) # так не следует делать
print('Привет!)
Мы же не делаем этого в мат. выражениях:
Код:
f(x, y) = sin(x)*cos(y)
2. В Python операцию обмена вида:
Код:
t = a
a = b
b = a
можно записать и так:
Код:
a, b = b, a
x, y, z = z, x, y # и даже более
3. Не следует импортировать из библиотеки все функции, к тому же, если вы пользуетесь одной.
Код:
import random   # так не следует ...

from random import randrange
4. Зачем инициировать так много переменных, если они всё равно формируются вновь?

5. Если этот код для Вас любимого, то его стоит улучшить.
Если этот код для новичков, то его тем более стоит улучшить.

6. Я не программист, но некоторые решения режут глаз, если можно сделать "вкуснее".
Как-то так, ...
ViktorR вне форума Ответить с цитированием
Ответ


Купить рекламу на форуме - 42 тыс руб за месяц, летом дешевле!

Опции темы Поиск в этой теме
Поиск в этой теме:

Расширенный поиск


Похожие темы
Тема Автор Раздел Ответов Последнее сообщение
Одномерный массив 12 элементов,случайные положительные и отрицательные. Найти элемент наиболее близкий к среднему значению(Паскаль 1998y8m1d Помощь студентам 6 16.12.2013 17:06
Случайные буквы StudentMarat Помощь студентам 6 17.10.2011 17:24
Случайные числа. Си. meta Помощь студентам 1 31.05.2011 01:48
случайные числа NeVerSS Общие вопросы Delphi 3 01.10.2010 22:22
Случайные числа.... Teen4jump Общие вопросы Delphi 4 28.11.2008 23:52