Форум по Delphi программированию

Delphi Sources



Вернуться   Форум по Delphi программированию > Все о Delphi > Разное
Ник
Пароль
Регистрация <<         Правила форума         >> FAQ Пользователи Календарь Поиск Сообщения за сегодня Все разделы прочитаны

Ответ
 
Опции темы Поиск в этой теме Опции просмотра
  #1  
Старый 19.12.2010, 21:23
Аватар для Fighter4Freedom
Fighter4Freedom Fighter4Freedom вне форума
Прохожий
 
Регистрация: 19.12.2010
Сообщения: 1
Репутация: 10
По умолчанию Программа для работы с многомерными динамическими массивами

Задача состоит в следующем: необходимо написать программу, которая могла бы создавать 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.

Помогите пожалуйста разобраться, спасибо.
Ответить с цитированием
Ответ


Delphi Sources

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

Расширенный поиск
Опции просмотра

Ваши права в разделе
Вы не можете создавать темы
Вы не можете отвечать на сообщения
Вы не можете прикреплять файлы
Вы не можете редактировать сообщения

BB-коды Вкл.
Смайлы Вкл.
[IMG] код Вкл.
HTML код Выкл.
Быстрый переход


Часовой пояс GMT +3, время: 09:47.


 

Сайт

Форум

FAQ

RSS лента

Прочее

 

Copyright © Форум "Delphi Sources" by BrokenByte Software, 2004-2023

ВКонтакте   Facebook   Twitter