русский

Мои программы

3112  1 2 3 4 alle
alek4 старожил14.04.25 20:36
NEW 14.04.25 20:36 
in Antwort alek4 31.01.25 14:13

[size=30]Программа Б--АКСОН

[/size]

[size=20][color=maroon]1.Общее

2.Нейронная сеть – граф

3.Активность нейронов

4.Входной сигнал

5.Связи между нейронами

6.Итерации основного цикла

7.Итерации суперцикла

8.Скачивание программы Б--АКСОН

[/color][/size]

[size=20][color=maroon]1.Общее[/color][/size]

Программа Б-АКСОН – развитие программы --АКСОН

Разум у живого реализован на основе нейронных сетей.

То есть нейронов, передающих между собой сигналы повышения активности (связи +) и уменьшения активности (связи -).

Нейроны имеют отростки: аксоны и дендриты.

Передатчик сигналов: аксон, приемник: дендрит.

В технике появились аналоги нейронных сетей живого.

Общее название

Такие сети наследовали только общие принципы нейронных сетей живого.

Аналоги не связаны биологическими ограничениями.

Ниже будет описана программа Б--АКСОН.

Цель программ серии АКСОН.

Изучить функционирования нейронных сетей.

И построить нейронную сеть с четким соответствием: входной сигнал – выходной сигнал.

Разумеется, имеется много вариантов анализа выходных сигналов.

Программы серии АКСОН.

Программа АКСОН.

Между нейронами только сигналы увеличения активности.

Входные сигналы – положительные.

Введена функция забывания, уменьшения активности нейронов со временем.

Программа в ветви «Комментарии к Программам».

Программа +- Аксон

Связи между нейронами + и -.

Входные сигналы +.

Программа –-АКСОН.

Связи между нейронами + и -.

Входные сигналы +и -.

Программа Б-АКСОН.

Связи между нейронами + и -.

Входные сигналы +и -.

Добавлена функция.

Расчёт для серии входных сигналов.

[size=20][color=maroon]2. Нейронная сеть – граф[/color][/size]

Нейронной сети соответствует ориентированный граф – орграф.

Нейрону ставится в соответствие вершина орграфа.

Ниже нейрон и вершина графа одинаковое содержание.

Число вершин – const: n.

Дуга между вершинами соответствует связи аксон – дендрит.

Дуга из вершины i в вершину j соответствует связи аксон – дендрит.

Между каждой парой может в каждом направление быть несколько дуг или не одной.

Число дуг случайная или постоянная величина.

Орграф может быть полносвязным.

Из каждой вершины можно достичь всех вершин по ориентации (направлению) дуг.

Орграф может быть частично связным, когда одни вершины имеют пути ко всем другим вершинам, другие только к части вершин. При построении орграфа в конкретной задаче проверка связности графа не проводилась. Для отдельных пар вершин по одному или двух направлениях случайным образом в конкретной программе задавалось отсутствие связи: const m.

[size=20][color=maroon]3. Активность нейронов[/color][/size]

Каждому нейрону при расчётах присваивается вес.Вес может быть со знаком плюс или минус. В конкретной программе вес – положительная величина не более const z или отрицательная величина не менее const z1.

[size=20][color=maroon]4. Входной сигнал[/color][/size]

В конкретной программе предусмотрены два вида входного сигнала.

Вес случайный и вес постоянный.

Переключатель: const k.

К = 1 – случайный входной сигнал: const a1

a1>0.

Диапазон: 0 – а1-1.

К = 2 – постоянный входной сигнал: const a2.

a2>0.

Входной сигнал подается одного веса на несколько нейронов.

Период подачи – переменная переменная ij.

Изменение ij в диапазоне v1 – v.

Входной сигнал – матрица f[1..n].

f – величина входного сигнала на нейрон –i.

[size=20][color=maroon]5. Связи между нейронами[/color][/size]

Связи между нейронами – матрица s[1..n,1..n].

Переключатель вида матрицы s[1..n,1..n].- pp.

pp =1

Вес элементов вероятностный в диапазоне 0 – a3-1.

a3>0.

pp =2

Вес элементов постоянный – a4.

Задаются нулевые связи между нейронами: const m.

Задаются положительные и отрицательные связимежду нейронами: const nn.

a4>0.

[size=20][color=maroon]6. Итерации основного цикла[/color][/size]

В работы программы по основному цикл, переменная i, последовательно заполняется матрица p[1..t1,1..n].

p[i,j] – вес нейрона j после итерации i.

Итерация.

Вес каждого нейрона увеличивается или уменьшается на сумму дуг в соответствии с матрицей s[1..n,1..n] от нейронов весом отличного от нуля.

Если вес нейрона при итерации превышает const z, весанейрона равен z.

Если сумма дуг с учётом знака менее const z1,вес нейрона равен z1.

Максимальное число итераций - const t1.

Если в ходе выполнения итераций на трех последовательных итерациях вес всех нейронов не меняется, вычисления заканчиваются.

Фиксируется ww = i-1.

[size=20][color=maroon]7. Итерации суперцикла[/color][/size]

Переменная суперцикла ij.

В ходе итераций суперцикла выполняются итерации основного цикла.

Диапазон изменения ij: v1 –v.

Заполняется массив s1[1..n].

Элемент s1 равен частному от деления на число нейронов – n суммы элементов строки wwматрицы p[1..n,1..n] при i =ij.

[size=20][color=maroon]8. Скачиваниие программы Б--АКСОН[/color][/size]

Программа АКСОН на Дельфи 7.

Ввод в программе –const.

Распечатка программы в WORD: Приложение 1.[/color][/size]

Для скачивания вариант с постоянными величинами вероятностей при разных входах в программу.

//initialization

//randomize;

Входные сигналы только с сигналом +.

Со знаком - заблокированы

Скачать программу Б--АКСОН

https://yadi.sk/d/ouwjDuZUQLzgVA

[size=20][color=maroon]Приложение 1[/color][/size]

программа WORD

unit Unit1;

interface

uses

Windows, Messages, SysUtils, Variants, Classes, Graphics, Controls, Forms,

Dialogs, Grids, StdCtrls;

type

TForm1 = class(TForm)

StringGrid1: TStringGrid;

Button1: TButton;

Button2: TButton;

Button3: TButton;

Button5: TButton;

Label1: TLabel;

StringGrid2: TStringGrid;

StringGrid3: TStringGrid;

StringGrid4: TStringGrid;

Button4: TButton;

Edit1: TEdit;

Edit2: TEdit;

Label4: TLabel;

Edit3: TEdit;

Label2: TLabel;

Label3: TLabel;

Label7: TLabel;

Label6: TLabel;

Edit4: TEdit;

procedure Button1Click(Sender: TObject);

procedure Button5Click(Sender: TObject);

procedure Button2Click(Sender: TObject);

procedure Button4Click(Sender: TObject);

private

{ Private declarations }

public

{ Public declarations }

end;

var

Form1: TForm1;

implementation

{$R *.dfm}

const

n =300;// ÷ число нейронов

t1 =1500 ;//максимальное число итераций

a1 = 200;//абсолютный вес связи:аксон - дендрит

//вероятностное задание веса

a2 = 300;// абсолютный вес связи: аксон - дендрит

// вес постоянный

a3 =200;// вес входного сигнала

//вероятностное задание веса

a4=200 ;// постоянный вес входного сигнала

k=1 ;//переключатель связи аксон - дендрит

pp=1;//переключатель входного сигнала

v1 = 1;//

v=100;//формирование входного сигнала

//периодичность нулей

m=15;// отсутствие связи между нейронами

z= 300;// максимальный вес нейрона

z1= -300;// минимальный вес нейрона

nn=4;// связь аксон - дендрит

vv =5;// +- входной сигнал

jj = 7 ;// вывод входного сигнала ij = jj

var

Tick: Cardinal;

s:array [1..n, 1 ..n] of integer;// связи аксон - дендрит

p : array [1..t1,1..n] of integer;// состояние нейронов

f :array [1..n] of integer;// состояние входного сигнала

s1 : array [v1..v] of real; //

s2 :array [v1..v] of integer;//

s3 :array [v1..v] of integer;//

a, u, x,x1, c, b1,d1, t,d, g, q,i,j,h,i1,i2,hh : integer; //

j1,j2,j3,j4,j5,j6,j7,j8, i3,i4,i5,i6,i7,i8,i0: integer; //

w, e, e1, z2, z3: integer;//

m1 ,m2,m3,m4,m5, m6,m7 ,m8,m9,m10: integer;//

t3: integer;

ia, ib,ic, id ,it,iw, iu, ju, ja, jb, jc, jd ,jt, jw, ij : integer;//

zz ,ss,ww, sss, uu ,u1,u2,u3:integer;//

r, r1, r2, r3, r4, r5, r6:integer;//

ff ,tt ,c1, g1,cc,ccc, mm , kk:integer;//

l1, l2 ,l3,l4, r7, r8, r9: variant;//

p1,p2,p3,p4,p5,p6: real ; //

procedure TForm1.Button1Click(Sender: TObject);

// îêàíòîâêà

begin

for q:=1 to n //нумерация в горизонтали в табл. № 1 ,

do StringGrid1.Cells[q,0]:=IntToStr(q);

for q:=1 to 5// нумерация по вертикали в табл. № 1 ,

doStringGrid1.Cells[0,q]:=IntToStr(q);

for q:=1 to n // нумерация в горизонтали в табл. № 2

do StringGrid2.Cells[q,0]:=IntToStr(q);

for q:=1 to t1// нумерация по вертикали в табл. № 2

doStringGrid2.Cells[0,q]:=IntToStr(q);

for q:=1 to n // нумерация в горизонтали в табл. № 4

do StringGrid4.Cells[q,0]:=IntToStr(q);

for q:=1 to n// нумерация по вертикали в табл. № 4

doStringGrid4.Cells[0,q]:=IntToStr(q);

for q:=1 to n // нумерация в горизонтали в табл. № 3

do StringGrid3.Cells[q,0]:=IntToStr(q);

for q:=1 to n// нумерация по вертикали в табл. № 3

doStringGrid3.Cells[0,q]:=IntToStr(q);

end;

procedure TForm1.Button2Click(Sender: TObject);

begin

// формирование матрицы s

for i:=1 to n do

for j:= 1 to n do

if i<>jthen

begin

if k=1 thenbegin//a

s[i,j] := random ( a1);

mm:= random (nn);

if mm = 0 then s[i,j] := (- s[i,j]);

h:= random (m);

if h>3 then s[i,j] := 0;

end;//a

if k=2 thenbegin//b

s[i,j] := a2;

mm:= random (nn);

if mm = 0 then s[i,j] := (- s[i,j]);

h:= random (m);

if h>3 then s[i,j] := 0;

end;end;//b

for iu :=1 to n do

for ju := 1 to n do

begin

if s[iu,ju] >0 then u1 := u1 +1;

if s[iu,ju] =0 then u2 := u2 +1;

if s[iu,ju] <0 then u3 := u3 +1;

end;

//суперцикл

for ij := v1 to v do

// формирование входного сигнала

begin

m8:=0;m9:=0; m10 :=0;c:=0;r7:=0; r8:=0;w:=0;

for i:=1 to ndo

for j:=1 to ndo

p[i,j] := 0;

if pp = 1 then

for j:= 1 to n dobegin

W:=w+1;

f[j] := random ( a3);

hh:= random (vv);

d:=w mod ij ;

if d> 0 then f[j] := 0;

//if hh>3 then f[j] := -f[j];

end;

if pp=2 then

for j:=1 to ndo

begin

W:=w+1;

d:=w mod ij ;

if d = 0 then f[j] :=a4;

if d> 0 then f[j] := 0;

hh:= random (vv);

// if hh>3 then f[j] := -f[j];

end;

if ij = jj then

for j:= 1 to ndo

StringGrid1.Cells[j,1]:=

IntToStr( f[j]);

for jw :=1 to n dobegin

if f[jw]>0 then m8 := m8+1;

if f[jw]=0 then m9 := m9+1;

if f[jw]<0 then m10 := m10+1;

end;

// основной цикл

for j:=1 to ndo begin

p[1,j] := f[j] ;

end;

//основной цикл

for i:=1tot1 do

begin

c:= c+1;

if i>= 2 then begin

for ia:= 1 to n do

for ib := 1 to ndo

ifp[i-1,ib] <> 0

then if ib<>ia then

p[i,ia]:=p[i-1,ia]+ s[ib ,ia];

for it := 1 to ndobegin

if p[i,it]>z thenp[i,it]:=z;

if p[i,it]<z1 thenp[i,it]:=z1;

end;

kk:=0;

for iw:=1 to ndo

if(( p[c-3,iw]<>p[c-1,iw] )

or(p[c-1,iw]<>p[c,iw]) )then kk :=1;

if (kk =0)then begin uu:=777;ww:=c-1; break;end;

end;

end;

Form1.Caption:=IntToStr(GetTickCount-Tick);

for ic:=1 to ndobegin

if p[c-3,ic]= 0 then u:= u +1;

if p[c-3,ic]=z then x:= x +1;

if p[c-3,ic]=z1 then x1:= x1 +1;

ifp[c-3,ic]= a3 then ccc:= ccc +1;

if( ((p[c-3,ic]<>0) and ( p[c-3,ic]<>z))

and((p[c-3,ic]<>a3 ) and (p[c-3,ic]<>z1)) )

then g1:= g1+1;

if p[c,ic]= 0 then r:= r +1;

if p[c,ic]= z then e:= e +1;

if p[c,ic]= z1 then e1:= e1 +1;

ifp[c,ic]= a3 then cc:= cc +1;

if(((p[c,ic]<>0) and ( p[c,ic]<>z))

and((p[c,ic]<>a3 ) and ( p[c,ic]<>z1)))

then g:= g+1;

end;

t:= u+x+ccc+g;

for i:=1 to n do

for j:=1 to n do

begin

if s[i,j] = 0 then m1 := m1+1;

if s[i,j] >0 then m2 := m2+1 ;

if s[i,j] < 0 then m3 := m3+1 ;

if s[i,j] >0 then m4 := m4+s[i,j];

if s[i,j] <0 then m5 := m5+s[i,j];

END;

m7 := m1+m2+m3;

l1:=r/n;

l2:= e/n;

l3 := cc/n;

l4 := g/n;

r7:=0; r8 :=0;

for i:=1 to ndobegin

r7 := r7+ p[ww,i];

r8 := r8+ p[ww,i]*p[ww,i];

end;

p1:= r7/n;

p2:= r8/n;

p3:= Sqrt(p2);

s1[ij] := p1;

s2[ij] := ij;

s3[ij] := ww;

end;

for i:=1 to ndo

for j:=1 to ndo

StringGrid4.Cells[j,i]:=

IntToStr( s[i,j]);

for i:=1 to t1do

for j:= 1 to ndo

StringGrid2.Cells[j,i]:=

IntToStr( p[i,j]);

for j:= 1 to ndo

begin

StringGrid3.Cells[j,1]:=

FormatFloat('0.00',s1[j]);

StringGrid3.Cells[j,2]:=

IntToStr( s2[j]);

StringGrid3.Cells[j,3]:=

IntToStr( s3[j]);

end;

Edit1.Text := 'm='+'---'+IntToStr(m)+''+

'n='+'---'+IntToStr(n)+''+

't1='+'---'+IntToStr(t1)+''+

'a1='+'---'+IntToStr(a1)+''+

'a2='+'---'+IntToStr(a2)+''+

'a3='+'---' +IntToStr(a3)+''+

'k='+'---' +IntToStr(k)+''+

'nn='+'---' +IntToStr(nn) +''+

'v='+'---' +IntToStr(v)+''+

'c='+'---' +IntToStr(c) +''+

'z='+'---' +IntToStr(z)

+''+

'm8='+'---' +IntToStr(m8)+''+

'm9='+'---' +IntToStr(m9) +''+

'm10='+'---' +IntToStr(m10);

Edit2.Text := 'r='+'---'+IntToStr(r)+''+

'e='+'---'+IntToStr(e)+'' +

'e1='+'---'+IntToStr(e1)+'' +

'cc='+'---'+IntToStr(cc)+'' +

'g='+'---'+IntToStr(g)+'' +

't='+'---'+IntToStr(t)+'' +

'u='+'---'+IntToStr(u)+'' +

'x='+'---'+IntToStr(x)+'' +

'x1='+'---'+IntToStr(x1)+'' +

'ccc='+'---'+IntToStr(ccc)+'' +

'g1='+'---'+IntToStr(g1)

+''+

'ff='+'---'+IntToStr(ff)

+'' +

'u1='+'---'+IntToStr(u1)+'' +

'u2='+'---'+IntToStr(u2)

+''+

'u3='+'---'+IntToStr(u3);

Edit3.Text :=

'l1='+'---'+FormatFloat('0.000',l1)+'' +

'l2='+'---'+FormatFloat('0.000',l2)+'' +

'l3='+'---'+FormatFloat('0.000',l3) +'' +

'l4='+'---'+FormatFloat('0.000',l4) +'' +

'tt='+'---'+IntToStr(tt)+'' +

'uu='+'---'+IntToStr(uu)+''+

'ww='+'---'+IntToStr(ww)+''+

'm1='+'---'+IntToStr(m1)+'' +

'm2='+'---'+IntToStr(m2)+'' +

'm3='+'---'+IntToStr(m3)+'' +

'm4='+'---'+IntToStr(m4)+'' +

'm5='+'---'+IntToStr(m5)

+'' +

'm7='+'---'+IntToStr(m7);

Edit4.Text :=

'r7='+'---'+IntToStr(r7)+'' +

'r8='+'---'+IntToStr(r8)

+'' +

'p1='+'---'+FormatFloat('0.000',p1) +'' +

'p2='+'---'+FormatFloat('0.000',p2)

+'' +

's1[v1]='+'---'+FormatFloat('0.000',s1[v1])

+'' +

's1[v1+1]='+'---'+FormatFloat('0.000',s1[v1+2])

+'' +

's1[v-1]='+'---'+FormatFloat('0.000',s1[v-1])

+'' +

's1[v]='+'---'+FormatFloat('0.000',s1[v]);

end;

procedure TForm1.Button4Click(Sender: TObject);

begin

end;

////////////////////////////////////////////////////////////////

procedure TForm1.Button5Click(Sender: TObject);

begin

close

end;

//initialization

//randomize;

end.

#61 
7495 коренной житель14.04.25 20:38
7495
NEW 14.04.25 20:38 
in Antwort alek4 14.04.25 20:11

Дед, если бы ты хотел обсудить свои программы, другое дело. А так тонны непонятного мусора, с битыми ссылками.


Ты ссылки то свои хоть проверяй. Какой смысл? Как на всём этом можно заработать? Объясняй дед, пока живой...


Fragen und Antworten - Программируем калькулятор пособий для беженцев вместе.
#62 
alek4 старожил15.04.25 11:58
NEW 15.04.25 11:58 
in Antwort alek4 31.01.25 14:13

////////////////////////////////////////////////////////////////////////////////////////////////////

[size=28][color=red]Программа «2МЕДИАНА»[/color][/size]

[size=20][color=maroon]

Предисловие

1. Определения

2.Математика

3. Структура программы

4. Алгоритм программы по части 1

5.Алгоритм программы по части2

6.Алгоритм программы по части3

7. Вывод

8. Результат

9. Скачать программу «2Медиана»

Приложение 1

Распечатка программы «2МЕДИАНА»

[/color][/size]

[size=20][color=maroon] ПРЕДИСЛОВИЕ[/color][/size]

В дереве исследуется вершина с minmax расстоянием до вершин дерева.

Проведено моделирование и расчёт по формуле.

[size=20][color=maroon]

1. Определения. [/color][/size]

Дерево - связный граф без циклов.

Смежные вершины связаны неориентированным ребром или двумя противоположно направленными дугами.

В зависимости от решаемой задачи используются оба варианта.

Висячая вершина, вершина инцидентная только одному ребру (паре дуг).

Расстояние между двумя вершинами i и j равно сумме рёбер (дуг) по пути между этими вершинами.

Обозначается, как l(i,j).

Новая вершина дерева вводится на ребре между двумя смежными вершинами исходного дерева.

Если исходные вершины i и j, то для вновь введенной вершины k выполняется

l(l ,k) + l(k, j) = l(i, j)

[size=20][color=maroon]

2. Математика [/color][/size]

2.1. Медиана дерева.

Медиана - вершина исходного дерева или новая вершина, максимальное расстояние которой до остальных вершин дерева– минимально.

2.2. Нахождение медианы

Для нахождения медианы использован следующий алгоритм.

Шаг 1. Произвольно выбирается одна из висячих вершин - А

Шаг 2. Из вершины А определяетсярасстояние (сумма длин рёбер)до всех висячих вершин.

Шаг 3. Находится вершина Б с максимальным расстояниемl(А –Б).

Если таких вершиннесколько выбирается произвольно одна .

Шаг 4. Находится вершина В с максимальным расстоянием l(Б-В).

Шаг 5. Медиана есть вершина Г, которая лежит на пути Б-В и

l(Б,Г)= l(Г,В)=zg.

[size=20][color=maroon]

3. Структура программы [/color][/size]

3.1. Три части программы

Программа 1МЕДИАНА из трёх частей.

Часть 1

Программа «А - дерево» формирует случайное дерево.

Программа А-Дерево по ссылке

https://fguploniis.mybb.ru/viewtopic.php?id=1025

Часть 2

Находится вершина -медиана дерева.

Часть 3

Вычисление средних величин по циклам суперцикла.

Для набора статистики введен суперцикл.

Результаты суммируются и усредняются.

На каждом шаге суперцикла выполняются три операции.

А) Формируется случайное дерево ( Часть 1).

Б) Для случайного дерева находится медиана ( Часть 2).

По данным циклов суперцикла вычисляются средние величины (Часть 3)

3.3. Исходные данные для расчёта вводятся в текст программы (const)

Это:

x - число циклов суперцикла

n - число вершин исходного дерева

zs- задание средней длины ребра

at- корень степени

[size=20][color=maroon]

3. Алгоритм программы по части 1 [/color][/size]

Алгоритм программы по части 1 повторяет программу А-Дерево.

[size=20][color=maroon]

4.Алгоритм программы по части 2 [/color][/size]

Шаг 1

Вычисляется длины ребер (дуг) на основе средней длины ребра - zc.

Шаг 2

Выбирается случайно висячая вершина А (za)

Шаг 3

Находится вершина Б (zm).

l(А,Б) максимально по множеству вершин дерева

Построение матрицы pb

Матрица содержит информацию о направлении дуг при поиске расстояния от вершины А.

Для таких дуг, как метка, показана их длина.

Шаг 4

Находится вершина В(zf)

l(Б,В) максимально по множеству вершин дерева

Построение матрицы pc.

Матрица содержит информацию о направлении дуг при поиске расстояния от вершины Б.

Для таких дуг, как метка, показана их длина.

Шаг 5

Из вершины В определяется расстояниедо остальных вершин графа.

Находится вершина Б(zy).

l(В,Б) максимально по множеству вершин дерева

Построение матрицы pd.

Матрица содержит информацию о направлении дуг при поиске расстояния от вершины Б.

Для таких дуг, как метка, показана их длина.

Шаг 6

Находится матрица pv.

Матрица содержит только дуги по пути от Б к В и от В к Б.

Шаг 7

Находятся вершины на пути из Б в В.

Это осуществляется так.

Ведется поиск расстояний от В к Б только по дугам пути Б – В.

Шаг 8

Находится медиана – вершина x1.

Максимальное расстояние медианы до вершин дерева – zg.

Таких вершин две и более.

[size=20][color=maroon]

6.Алгоритм программы по части3 [/color][/size]

for i:=1 to x do

w1 := w1 + ww;

w2:= w1/x;

w3 := w2/(n);

w4:= w2/(zs);

w5:= w2/(zs*exp(1/at*ln(n)) );

На каждом цикле суперцикла находится величина zg .

zg = minmax l(x1, множество вершин дерева).

x1 - медиана

Сумма zg по всем циклам суперцикла - w1.

Усредненное по числу циклов - w2.

Усредненное по числу циклов и числу вершин дерева - w3.

Усредненное по числу циклов и средней длине ребра - w4.

Усреднено по числу циклов, средней длине ребра и делится на корень

1.75 (7/4)- w5.

Переменнаяw5 приx>50,zs>=10 и n>=100 слабо меняется при изменении n.

Отсюда принято

1,22 = zg:(zs * корень 1, 75 из n)

zg = 1,22 : (zs * корень 1, 75 из n) (1)

u1 расчёт zg по формуле (1).

u2 погрешность при расчётах по программе и по формуле.

u2 := (u1 - w2):u1;

[size=20][color=maroon]7.Вывод[/color][/size]

[color=blue][size=18]Выводятся следующие результаты в форме массивов

Переменных.

Назначение массивов в распечаткепрограммы – Приложение1.

Вывод переменных по расчёту медианы:

Edit 1 и Edit 2

Вывод переменных по расчёту случайного дерева:

Edit 3 и Edit 4

Основные переменные по

Вывод переменных по расчёту случайного дерева:

Edit 1 иEdit 2

Основные переменные по

Edit 1

y1=---0y2=---32y3=---88y4=---14y5=---72w2=---1131,700w3=---22,634w4=---11,317w5=---1,210u1=---1122,073u2=----0,009

Где

y1 – номер вершины, если медиана совпадает с вершиной.

И y=0, если не совпадает.

y2, y4 ребро, на котором введена медиана

y3, y5 длины ребер y2-медиана и медиана - y4

w2, w3, w4, w5, u1 u2 см. в разделе 6[/color=blue][/size=18]

[color=blue][size=18]Основные переменные по

Edit 2

za=---36zb=---18zc=---11zv=---11zn=---1442zm=---13zd=---2116zf=---14zg=---1058zq=---49zw=---49ze=---49zr=---2116zt=---0zy=---13x0=---113,15

za – вершина А

zn – l(А,Б)

zm – вершина Б

zf- вершинаВ

zd- l(Б,В)

zg -l(Б,В):2[color=blue][size=18]

[size=20][color=maroon]8.Результат[/color][/size]

Результаты расчёта по программе и формуле показали близкое совпадение.

Nu2

500,046

1000,008

2000,038

3000,029

4000,042

5000,069

600-0,021

700-0,007

800-0,012

900-0,002

1000-0,077

[size=20][color=maroon]

9. Скачать программу «2МЕДИАНА» [/size=20][/color=maroon]

https://disk.yandex.ru/d/b7WMbTGfVYohqg

////////////////

////////

[size=20][color=maroon]

Приложение 1 [/color][/size=20]

Распечатка программы

unit Unit1;

interface

uses

Windows, Messages, SysUtils, Variants, Classes, Graphics, Controls, Forms,

Dialogs, Grids, StdCtrls;

type

TForm1 = class(TForm)

StringGrid1: TStringGrid;

Button1: TButton;

Button5: TButton;

Label1: TLabel;

StringGrid3: TStringGrid;

StringGrid4: TStringGrid;

Edit1: TEdit;

Edit2: TEdit;

Label2: TLabel;

Label3: TLabel;

Label4: TLabel;

Label5: TLabel;

Label8: TLabel;

Label10: TLabel;

Edit3: TEdit;

Label11: TLabel;

StringGrid2: TStringGrid;

Label7: TLabel;

Label9: TLabel;

StringGrid5: TStringGrid;

StringGrid6: TStringGrid;

Label12: TLabel;

Label13: TLabel;

Label14: TLabel;

Label15: TLabel;

Edit4: TEdit;

StringGrid7: TStringGrid;

Label16: TLabel;

StringGrid8: TStringGrid;

StringGrid9: TStringGrid;

Label17: TLabel;

Label18: TLabel;

Label19: TLabel;

StringGrid10: TStringGrid;

Label20: TLabel;

Label21: TLabel;

Label22: TLabel;

Label23: TLabel;

Label24: TLabel;

Label25: TLabel;

Label26: TLabel;

Label28: TLabel;

procedure Button1click(Sender: TObject);

procedure Button5Click(Sender: TObject);

private

{ Private declarations }

public

{ Public declarations }

end;

var

Form1: TForm1;

implementation

{$R *.dfm}

const

x=20;// число суперциклов

n=100;//число вершин

zs =100;//задание длины рёбер

at =1.75;// корень степени

var

Tick: Cardinal;

u:array [ 1..n, 1 ..n] of integer;//матрица фрагментов дерева при выполнении

//основного циклана пследнем цикле суперцикла

p : array [1..2*n,1..n] of integer;//матрица инциденций дуг

// на последнем цикле суперцикла

uu :array [1..5*n] of integer;//мартица номеров фрагментов

//по номерам циклов основного цикла на последнем цикле суперцикла

ua :array [1..5*n] of integer;//мартица номеров фрагментов

// по порядковому номеру объединения на последнем цикле суперцикла

r :array [1..n] of integer;// integer;//матрица инциденцийчисла дуг

//исходящих из вершин деревапосле последнего цикла суперцикла

pa :array [1..n, 1 ..n] of integer;//матрицадлин рёбер

pb :array [1..n, 1 ..n] of integer;//матрицарасстояний от вершины А

pc :array [1..n, 1 ..n] of integer;//матрицарасстояний от вершины Б

pd:array [1..n, 1 ..n] of integer;//матрицарасстояний от вершины В

pv :array [1..n, 1 ..n] of integer;//матрица

s1:array [1..n] of integer;// матрица суммы исходящих дуг

// с разбивкой по числу дуг инцидентных вершинам: 1,2, 3 ...n-1.//

s2:array [1..n] of variant;/// Число дуг в массиве S1 делится

//на число циклов в суперцикле

s3:array [1..n] of variant;//Число дуг в массиве S1 делится

//произведение число циклов в суперциклеи числа вершин.

// Ччисло циклов в суперцикле

ra : array [1..n] of integer;// матрица расстояний отвершины А

rb:array [1..n] of integer;//номера итераций при нахождении

//растояний от вершины А

rc:array [1..n] of integer;// матрица расстояний отвершины Б

rw:array [1..n] of integer;// /номера итераций при нахождении

//растояний от вершины Б

rd:array [1..n] of integer;// матрица расстояний отвершины В

rf:array [1..n] of integer;//номера итераций при нахождении

//растояний от вершины В

r1:array [1..n] of integer;//матрица расстояний

// на пути из вершины Б в В

r2:array [1..n] of integer;// номера итераций

// на пути изБ в В

r3:array [1..n] of integer;// перечень расстояний

// на пути из Б в В

r4:array [1..n] of integer;// перечень вершин

ww:array [1..x] of real; //

// на пути изБ в В

a, b, k, g, h, h1, q,i,j: integer; //

j1,j2,j3,j4,j5,j6,j7,j8,i2,i1,e, i3,i4,i5,i6,i7,i8,i9,i0: integer; //

m, aa, bb, z, f, c, w,v: integer;//

m1 ,m2,vv: integer;//

kk,ii , jj,t1, k1: integer;//

ia, ib, ic ,id,iw,ie, ja, jb,jc,jd,jw,je,jk : integer;//

za, zb, zc, zv, zn, zm,zd, zf, zg, zh, zk, zq, zw, ze, zr,zt,zy: integer;//

a1,tt: integer;//

z1, z2,z3: integer;//

x1, x2,x3,x4, y1,y2, y3, y4, y5: integer;//

x0, w1, w2,w3,w4, w5 :real; //

h2: variant;//

u1, u2, u3: real ;// вычислено по формуле

procedure TForm1.Button1click(Sender: TObject);

// окантовка

begin

begin

for q:=1 to n //нумерация по горизонтали в табл №1 ,

do StringGrid1.Cells[q,0]:=IntToStr(q);

for q:=1 to n// нумерация по вертикалив табл №1 ,

doStringGrid1.Cells[0,q]:=IntToStr(q);

for q:=1 to 42 //нумерация по горизонтали в табл №2,

do StringGrid2.Cells[q,0]:=IntToStr(q);

for q:=1 to 50// нумерация по вертикалив табл №2 ,

do StringGrid2.Cells[0,q]:=IntToStr(q);

for q:=1 to 3*n //нумерация по горизонтали в табл №3,

do StringGrid3.Cells[q,0]:=IntToStr(q);

for q:=1 to 25// нумерация по вертикалив табл №3 ,

doStringGrid3.Cells[0,q]:=IntToStr(q);

for q:=1 to n //нумерация по горизонтали в табл №4,

do StringGrid4.Cells[q,0]:=IntToStr(q);

for q:=1 to 2*n// нумерация по вертикалив табл №4 ,

doStringGrid4.Cells[0,q]:=IntToStr(q);

for q:=1 to n //нумерация по горизонтали в табл №1 ,

do StringGrid5.Cells[q,0]:=IntToStr(q);

for q:=1 to n// нумерация по вертикалив табл №1 ,

doStringGrid5.Cells[0,q]:=IntToStr(q);

for q:=1 to 50 //нумерация по горизонтали в табл №1 ,

do StringGrid6.Cells[q,0]:=IntToStr(q);

for q:=1 to 2*n// нумерация по вертикалив табл №1 ,

doStringGrid6.Cells[0,q]:=IntToStr(q);

for q:=1 to n //нумерация по горизонтали в табл №1 ,

do StringGrid7.Cells[q,0]:=IntToStr(q);

for q:=1 to n// нумерация по вертикалив табл №1 ,

doStringGrid7.Cells[0,q]:=IntToStr(q);

for q:=1 to n //нумерация по горизонтали в табл №1 ,

do StringGrid8.Cells[q,0]:=IntToStr(q);

for q:=1 to n// нумерация по вертикалив табл №1 ,

doStringGrid8.Cells[0,q]:=IntToStr(q) ;

for q:=1 to n //нумерация по горизонтали в табл №1 ,

do StringGrid9.Cells[q,0]:=IntToStr(q);

for q:=1 to n// нумерация по вертикалив табл №1 ,

doStringGrid9.Cells[0,q]:=IntToStr(q) ;

for q:=1 to n //нумерация по горизонтали в табл №1 ,

do StringGrid10.Cells[q,0]:=IntToStr(q);

for q:=1 to n// нумерация по вертикалив табл №1 ,

doStringGrid10.Cells[0,q]:=IntToStr(q)

end;

//суперцикл

for m:=1 to xdo

begin

/////////////////////////////////

// обнуление

za:=0;zb:=0;zc:=0;zv:=0;zn:=0;zm:=0;

zd:=0;zf:=0;zg:=0;zh:=0;zk:=0;zq:=0;

zw:=0;zr:=0;zt:=0;zy:=0;Ze:=0;

x0:=0;z1:=0; Z2:=0; Z3:=0;

f:=0;

for i:=1 to n do

for j:= 1 to n dobegin

pa[i,j] :=0;

pb[i,j] :=0;

pc[i,j] :=0;

pd[i,j] :=0;

pv[i,j] :=0;

end;

for i:=1 to n do

begin

ra:=0;

rb:=0;

rc:=0;

rw:=0 ;

rd:=0;

rf :=0;

r1:=0;

r2 :=0;

r3 :=0;

r4 :=0;

end;

////////////////////////////////////////

////////////////////////////////////////////////////////

////////////////////////////////////

//ЧАСТЬ 1

//нахождение случайного дерева

// обнуление

for id:=1 to 2*n do

for jd:=1 to n do

p[id,jd] :=0;

for iw := 1 to n do

for jw :=1 to n do

u[iw,jw] :=0;

for ie :=1 to 5*n do

uu[ie] :=0;

for ie :=1 to 5*n do

ua[ie] :=0;

for ie := 1 to n do

r[ie] := 0;

// исходные фрагменты

begin

for i:=1 to ndo

for j:=1 to ndo

if i=j thenp[i,j] :=1;

for i:= 1 to n do uu := 1;

for w:= 1 to (n-1) do// основной цикл

begin

Form1.Caption:=IntToStr(GetTickCount-Tick);

for i5 := 1 to 2do// пара фрагментов

begin // двойка

if i5 = 2 then//

C:=c+1;

//выбор фрагмента

V:=0;a:=0;

for i1 := 1 to (2*n) do

if uu[i1] >0 then

beginv:= v+1;

a:=random(v)+1;

end;

Z :=0;i2:=0;k:=0;

repeatbegin i2:= i2+1;k:=i2;

ifuu[i2] >0 then

z:= z+1 ; end;

until (z=a) ;

if i5 = 1 thenm1 := k;

if i5 = 2 thenm2 :=k;

if m=x then

begin

f:= f+1;

ua[f] :=k;

end;

//объединение фрагментов

vv := 0;

for i3 := 1 to n do

if p[k,i3]>0 then begin

vv:= vv+1;

p[w+n,i3]:=vv;

end;

//////////////////////////////////

//ввод ребра между соединяемыми фрагментами

//////////////////////////////// ii

begin

if i5 =1 then

begin

I7:=0;kk:= 0;; tt := 0;ii :=0;

for i6:=1 to n do

ifp[m1,i6]>0 thenkk := kk +1;

aa := random (kk) +1;

repeat

begin

Form1.Caption:=IntToStr(GetTickCount-Tick);

i7 := i7+1;

if p[m1,i7] >0 then tt:= tt+1; end;

until tt =aa;

end;

ii :=i7;

///////////////////////////////////

if i5 =2 then

begin

i0 := 0;k1:=0;t1:=0;jj:=0;

for i9:=1 to n do

ifp[m2,i9]>0 thenk1 := k1 +1;

bb := random (k1) +1;

repeat

begin

Form1.Caption:=IntToStr(GetTickCount-Tick);

i0 := i0+1;

if p[m2,i0] >0 then t1:= t1+1; end;

until t1 =bb;

jj :=i0;

u[ii,jj] := w;

u[jj,ii] := u[ii,jj];

end;

end;

/////////////////////////////////

if i5=2 then

uu[w+n] := w;

uu[k] := -w;

end ;

end;

h:=0;

for ia := 1 to n do

forja := 1 to n do

if u[ia,ja] >0 then

r[ia] := r[ia]+1;

for i:=1 to ndo

h := h+ r ;

for ib := 1 to n do

forjb := 1 to n do

if r[ib] = jb then s1[jb] := s1[jb] +1;

end;

/////////////////////////

for i:=1 to ndo

s2 := s1/x;

e:= h div 2;

for ic:=1 to n do

s3[ic] :=s1[ic]/(x*n);

for i:= 1 to n do

h1 := h1 + s1*i;

h2 := h1/x;

// ЧАСТЬ 2

// Нахождение медианы

begin

//Шаг1

//Расчёт длин рёбер

for i:=1 to n do

for j:=1 to n do

if j<ithen

if u[i,j]> 0 then

begin

pa[i,j] := (random (zs)+1)*2;

pa[j,i] := pa[i,j];

end;

//шаг 2

// Нахождение вершины А

for i:=1 to ndo

if r =1 thenzb:=zb+1;

zc:= random (zb) +1;

for i:=1 to n do begin

Form1.Caption:=IntToStr(GetTickCount-Tick);

if r =1 thenzv :=zv +1;

if zv = zc then

begin

za := i;break

end;

end;

/////

//Шаг 3

//Находится вершина Б (zm).

//l(А,Б) максимально по множеству вершин дерева

//Построение матрицы pb

//Матрица содержит информацию о направлении дуг при поиске расстояния от вершины А.

//Для таких дуг, как метка, показана их длина.

ra[za] := 100;

for ie := 1 to n-1 do

begin

Form1.Caption:=IntToStr(GetTickCount-Tick);

for i:=1 to n do

for j:=1 to n do

ifpa[i,j]>0then

if ((ra>0) and (ra[j] =0))

then

begin

ra[j] := (ra + pa[i,j]); zq:= zq+1;

pb[i,j] := pa[i,j]; rc[j] := zq;

end;

end;

for i:=1 to n do ra:= ra -100;

//нахождение вершины Б

zn := ra[1]; zm :=1;

for i:=1 to n-1do

if ra[i+1]> zn then

begin zn := ra[i+1] ;

zm :=i+1 ;

end ;

//Шаг 4

//Находится вершина В(zf)

//l(Б,В) максимально по множеству вершин дерева

//Построение матрицы pc.

//Матрица содержит информацию о направлении дуг при поиске расстояния от вершины Б.

//Для таких дуг, как метка, показана их длина.

rb[zm] := 100;

for ie := 1 to n-1 do begin

Form1.Caption:=IntToStr(GetTickCount-Tick);

for i:=1 to n do

for j:=1 to n do

if pa[i,j]>0 then

if ((rb>0) and (rb[j] =0))

then begin rb[j] := (rb + pa[i,j]) ;zw := zw +1;

pc[i,j] := pa[i,j];rw[j]:=zw;

end;

end;

for i:=1 to n do rb:= rb -100;

//построение матрицы pd

zd := rb[1]; zf :=1;

for i:=1 to n-1do

if rb[i+1]> zd then

begin zd := rb[i+1] ;

zf :=i+1

end ;

// Шаг 5

//Из вершины В определяется расстояниедо остальных вершин графа.

//Находится вершина Б(zy).

//l(В,Б) максимально по множеству вершин дерева

//Построение матрицы pd.

//Матрица содержит информацию о направлении дуг при поиске расстояния от вершины Б.

//Для таких дуг, как метка, показана их длина.

rd[zf] := 100;

for ie := 1 to n-1 do begin

Form1.Caption:=IntToStr(GetTickCount-Tick);

for i:=1 to n do

for j:=1 to n do

if pa[i,j]>0 then

if ((rd>0) and (rd[j] =0))

then begin rd[j] := (rd + pa[i,j]) ; ze := ze +1;

pd[i,j] := pa[i,j]; rf[j] := ze;

end;

end;

for i:=1 to n do rd:= rd -100;

// Нахождение вершины Б

zr := rd[1]; zy :=1;

for i:=1 to n-1do

if rd[i+1]> zr then

begin zr := rd[i+1] ;

zy :=i+1

end ;

///////////////////////////////////////////////////////////

//////////////////////////////////////////

/////////////////////////////////////////////////////////////

zg := zd div 2;

//

x0 := zg/exp(1/at*ln(n));

//// сбор статистики

ww[m]:=zg ;

//Шаг 6

//Находится матрица pv.

//Матрица содержит только дуги по пути от Б к В и от В к Б.

for i:=1 to n do

for j:=1 to n do

begin

ifpc[i,j] = pd[j,i] then pv[i,j] := pa[i,j]

end;

// Шг 7

///////////// повторно расстояния от вершины В

//по матрице pv

// нахождение вершин в пути Б-В

// Ведется поиск расстояний от В к Б только по дугам пути Б - В.

r1[zy] := 100;

for ie := 1 to n-1 do begin

Form1.Caption:=IntToStr(GetTickCount-Tick);

for i:=1 to n do

for j:=1 to n do

if pv[i,j]>0 then

if ((r1>0) and (r1[j] =0))

then begin r1[j] := (r1 + pv[i,j]) ;z1 := z1 +1;

r2[j] := z1;

end;

end;

for i:=1 to n do

if r1<>zq then

r1:= r1 -100;

// Нахождение вершины В

z2 := r2[1]; z3 :=1;

for i:=1 to n-1do

if r2[i+1]> z2 then

begin

Form1.Caption:=IntToStr(GetTickCount-Tick);

z2 := r2[i+1] ;

z3 :=i+1

end ;

////////////////////////////////////////////////////////////

//////////////////////////////////////////////////////////////

// Шаг 8

//Находится медиана - вершина x1.

//Максимальное расстояние медианы до вершин дерева - zg.

//Таких вершин две и более.

for i:=1 to n do

if r2>0 thenbegin

Form1.Caption:=IntToStr(GetTickCount-Tick);

r3[r2+1] := r1 ;

r4[r2+1] := i ;

end;

r4[1] := zy;

for i:=1 to n do

ifzg = r3 then y1 :=r4;

if y1 =0 then

for i:=1 to n-1 do

if (zg>r3) and (zg< r3[i+1]) then

begin y2 := r4 ;

y3 := zg- r3;

y4 := r4[i+1];

y5 := r3[i+1]-zg;

end;

end;

end;// суперцикл конец

// Обработка статистики

////

////

for i:=1 to x do

w1 := w1 + ww;

w2:= w1/x;

w3 := w2/(n);

w4:= w2/(zs);

w5:= w2/(zs*exp(1/at*ln(n)) );

w5:= w1/(zs*x*exp(1/at*ln(n)) );

//Эмпирическая формула (1)

u1 := 1.22* (zs*exp(1/at*ln(n)));

u2 := (u1 - w2)/u1;

/////////////////////////////

for i:=1 to ndo

for j:= 1 to ndo

StringGrid5.Cells[j,i]:=

IntToStr( pa[i,j]);

for i:=1 to ndo

StringGrid2.Cells[i,3]:=

IntToStr( r);

for i:=1 to 2*ndo

StringGrid2.Cells[i,1]:=

IntToStr( ua);

for i:=1 to ndo

StringGrid2.Cells[i,5]:=IntToStr(s1);

for i:=1 to ndo

StringGrid2.Cells[i,6]:=FormatFloat('0.0000',s2);

for i:=1 to ndo

StringGrid2.Cells[i,7]:=FormatFloat('0.0000',1000*s3);

for i:=1 to ndo

for j:= 1 to ndo

StringGrid1.Cells[j,i]:=

IntToStr( u[i,j]);

for i:=1 to 2*ndo

for j:= 1 to ndo

StringGrid4.Cells[j,i]:=

IntToStr( p[i,j]);

for i:=1 to 2*ndo

StringGrid3.Cells[i,1]:=

IntToStr( uu);

////////////////

Edit1.Text :=

'y1='+'---'+IntToStr(y1)+''+

'y2='+'---'+IntToStr(y2)+''+

'y3='+'---'+IntToStr(y3)+''+

'y4='+'---'+IntToStr(y4) +''+

'y5='+'---'+IntToStr(y5)+''+

//'w1='+'---'+FormatFloat('0.0',w1)+''+

'w2='+'---'+FormatFloat('0.000',w2) +''+

'w3='+'---'+FormatFloat('0.000',w3)+''+

'w4='+'---'+FormatFloat('0.000',w4)+''+

'w5='+'---'+FormatFloat('0.000',w5)+''+

' u1='+'---' +FormatFloat('0.000',u1)+'' +

'u2='+'--'+FormatFloat('0.000',u2);

Edit2.Text :=

'za='+'---'+IntToStr(za)+''+

'zb='+'---'+IntToStr(zb)+''+

'zc='+'---'+IntToStr(zc) +'' +

'zv='+'---'+IntToStr(zv) +'' +

'zn='+'---'+IntToStr(zn)+'' +

'zm='+'---'+IntToStr(zm) +'' +

'zd='+'---'+IntToStr(zd)+'' +

'zf='+'---'+IntToStr(zf) +'' +

'zg='+'---'+IntToStr(zg) +'' +'zq='+'---'+IntToStr(zq) +'' +

'zw='+'---'+IntToStr(zw)+'' +

'ze='+'---'+IntToStr(ze) +'' +

'zr='+'---'+IntToStr(zr)+'' +

'zt='+'---'+IntToStr(zt) +'' +

'zy='+'---'+IntToStr(zy)+'' +

'x0='+'---'+FormatFloat('0.00',x0);

Edit3.Text := 'kk='+'---'+IntToStr(kk)+''+

'aa='+'---'+IntToStr(aa)+'' +

'bb='+'---'+IntToStr(bb)+''+

'tt='+'---'+IntToStr(tt)+'' +

'ii='+'---'+IntToStr(ii)+'' +

'jj='+'---'+IntToStr(jj)+'' +

'k1='+'---'+IntToStr(k1)+''+

't1='+'---'+IntToStr(t1)+''+

'f='+'---'+IntToStr(f)+''+

'e='+'---'+IntToStr(e)+''+

'h='+'---'+IntToStr(h)+''+

't1='+'---'+IntToStr(t1)+''+

'k='+'---'+IntToStr(k) +''+

'w='+'---'+IntToStr(w)+''+

'c='+'---'+IntToStr(c)+''+

'z='+'---'+IntToStr(z)+''+

'v='+'---'+IntToStr(v)+' '+

'a='+'---'+IntToStr(a);

Edit4.Text :=

'm1='+'---'+IntToStr(m1)+''+

'm2='+'---'+IntToStr(m2) +''+

'i1='+'---'+IntToStr(i2) +''+

'i2='+'---'+IntToStr(i3) +''+

'i4='+'---'+IntToStr(i4) +''+

'i5='+'---'+IntToStr(i5)+''+

'i6='+'---'+IntToStr(i6)+''+

'i7='+'---'+IntToStr(i7) +''+

'i8'+'---'+IntToStr(i8) +''+

'i9='+'---'+IntToStr(i9)+''+

'i0='+'---'+IntToStr(i0) +''+

'h='+'---'+IntToStr(h) +''+

'h1='+'---'+IntToStr(h1) +''+

'h2='+'---'+FormatFloat('0.00',h2);

///////////////////////////////////////

for i:=1 to xdo

StringGrid6.Cells[i,11]:= FormatFloat('0.00',ww) ;

for i:=1 to ndo

for j:= 1 to ndobegin

StringGrid9.Cells[j,i]:=

IntToStr( pa[i,j]);

StringGrid7.Cells[j,i]:=

IntToStr( pb[i,j]);

StringGrid8.Cells[j,i]:=

IntToStr( pc[i,j]);

StringGrid5.Cells[j,i]:=

IntToStr( pd[i,j]);

StringGrid10.Cells[j,i]:=

IntToStr( pv[i,j]);

end;

for i:=1 to ndobegin

StringGrid6.Cells[i,1]:=IntToStr(ra);

StringGrid6.Cells[i,2]:=IntToStr(rc);

StringGrid6.Cells[i,3]:=IntToStr(rb);

StringGrid6.Cells[i,4]:=IntToStr(rw);

StringGrid6.Cells[i,5]:=IntToStr(rd);

StringGrid6.Cells[i,6]:=IntToStr(rf);

StringGrid6.Cells[i,7]:=IntToStr(r1);

StringGrid6.Cells[i,8]:=IntToStr(r2);

StringGrid6.Cells[i,9]:=IntToStr(r3);

StringGrid6.Cells[i,10]:=IntToStr(r4);

end;

end;

////////////////////////////////////////////////////////////////

procedure TForm1.Button5Click(Sender: TObject);

begin

close

end;

initialization

randomize;

end.

#63 
gendy Dinosaur15.04.25 13:14
gendy
NEW 15.04.25 13:14 
in Antwort alek4 15.04.25 11:58

научитесь пользоваться гитхабом, тогда возващайтесь. А эти простыни здесь не нужны

Фашизм будет разбит


Человека карают только те боги, в которых он верит

#64 
1 2 3 4 alle