F
Fighter4Freedom
Задача состоит в следующем: необходимо написать программу, которая могла бы создавать n-мерное количество m-мерных массивов. Предусмотреть формирование массива вручную и автоматически, при формировании автоматически заполнение должно производиться с использованием трех и более законов распределения. Предусмотреть вывод в графическом режиме, если заполнение производиться числами. Кроме того нужно выполнить элементарные действия с массивами, но это я думаю и сам смогу реализовать
Вопрос: возникла следующая проблема при попытке вычислить и заполнить StringGrid по формуле экспоненциального распределения. Функции я создаю в отдельном модуле. Во-первых, я не уверен, правильно ли я написал формулу на Делфи:
Далее идет модуль с прогой, где я не уверен в правильной передаче содержимого массива в StringGrid, а не уверен, поскольку мне не нравятся значения которые появляются в StringGrid:
Помогите пожалуйста разобраться, спасибо.
Вопрос: возникла следующая проблема при попытке вычислить и заполнить StringGrid по формуле экспоненциального распределения. Функции я создаю в отдельном модуле. Во-первых, я не уверен, правильно ли я написал формулу на Делфи:
Код:
unit Mas_func;
interface
Type mas = array of array of single;
procedure ExponInit(n,m: integer; p: single; var a: mas);
implementation
procedure ExponInit(n,m: integer; p: single; var a: mas);
var i,j: integer;
begin
SetLength(a, n, m);
a[0, 0] := 1;
for i := 0 to n-1 do
for j := 0 to m-1 do
a[i, j] := p * exp((-p) * a[i, j]);
end;
end.
Код:
implementation
{$R *.dfm}
var a1: mas; n,m: integer; p: single;
procedure TForm1.RadioGroup1Click(Sender: TObject);
var i,j: integer;
s: string;
begin
n := SpinEdit1.Value;
m := SpinEdit2.Value;
p := StrToFloat(Edit1.Text);
StringGrid1.RowCount := n;
StringGrid1.ColCount := m;
with StringGrid1 do
for i := 0 to RowCount - 1 do
for j := 0 to ColCount - 1 do
Cells[j, i]:= '';
if (RadioGroup1.ItemIndex = 0) then begin
ExponInit(n,m,p,a1);
for i := 0 to n-1 do
for j := 0 to m-1 do begin
str(a1[i, j]:8:3, s);
StringGrid1.Cells[j, i] := s;
end;
end;
end;
procedure TForm1.Edit1KeyPress(Sender: TObject; var Key: Char);
begin
if (Key in ['.', 'a'..'z', 'A'..'Z']) then
ShowMessage('Ви ввели недопустимий символ!');
end;
end.