|
|
Регистрация | << Правила форума >> | FAQ | Пользователи | Календарь | Поиск | Сообщения за сегодня | Все разделы прочитаны |
|
Опции темы | Поиск в этой теме | Опции просмотра |
#1
|
||||
|
||||
Программа для работы с многомерными динамическими массивами
Задача состоит в следующем: необходимо написать программу, которая могла бы создавать n-мерное количество m-мерных массивов. Предусмотреть формирование массива вручную и автоматически, при формировании автоматически заполнение должно производиться с использованием трех и более законов распределения. Предусмотреть вывод в графическом режиме, если заполнение производиться числами. Кроме того нужно выполнить элементарные действия с массивами, но это я думаю и сам смогу реализовать
Вопрос: возникла следующая проблема при попытке вычислить и заполнить 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. Далее идет модуль с прогой, где я не уверен в правильной передаче содержимого массива в StringGrid, а не уверен, поскольку мне не нравятся значения которые появляются в StringGrid: Код:
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. Помогите пожалуйста разобраться, спасибо. |