Главная страница
Top.Mail.Ru    Яндекс.Метрика
Текущий архив: 2002.05.20;
Скачать: CL | DM;

Вниз

Как в подпрограмму передать динамический двумерный массив?   Найти похожие ветки 

 
turonix ©   (2002-05-05 18:34) [0]

Привет народ! Помогите пожалуста. Как в подпрограмму передать динамический двумерный массив и вичислить его максимальное значение?
Прилагаю приблизительный код программы:

var
real_xS:array of array of extended;

begin
SetLength(real_xS,5,1024);

//здесь идет заполнение массива

...................

//

mmOutput.Lines.Add("Максимальное значение в массиве real_xS: "+floattostr(high_arr(real_xS))); //Вызов функции


high_arr - эта функция нахождения max значения в массиве. Я пробовал использовать open array,
но при этом возникает ошибка: [Error] proga22.pas(590): Incompatible types: "Array" and "dynamic array"

Вот пример подпрограммы:


function High_arr(arr1: array of extended):extended;
var
i:integer;
max:extended;

begin
arr1[0]:=max;
for i:=1 to 1023 high(arr1) do
begin
if arr1[i]>max then max:=arr1[i];
end;
Result:=max;
end;


 
~Sergius   (2002-05-05 19:19) [1]

Насколько понятно из кода, функция High_arr принимает параметр типа array of extended, а ей нужно array of array of extended. Вот.
Объяви это как тип и используй и для своей переменной и для типа параметра-переменной в заголовке процедуры.

Яйца и пальцы в солонку не совать. (с) Общепит


 
poisn   (2002-05-06 01:12) [2]

Думаю тебе этого хватит :)

unit Unit1;
interface
uses
Windows, Messages, SysUtils, Variants, Classes, Graphics, Controls, Forms,
Dialogs, StdCtrls;
type
TForm1 = class(TForm)
Label1: TLabel;
procedure FormCreate(Sender: TObject);
end;
ar2=array of array of integer;
var
Form1: TForm1;
implementation
{$R *.dfm}
function modifmatrix(m:ar2):ar2;
begin
result:=m;
end;
procedure fillmatrix(var m:ar2);
var i,j:integer;
begin
for i:=0 to length(m)-1 do
for j:=0 to length(m[length(m)-1])-1 do
m[i,j]:=random(10);
end;
procedure writematrix(m:ar2);
var i,j:integer;
begin
for i:=0 to length(m)-1 do
begin
form1.label1.Caption:=form1.label1.Caption+#10#13;
for j:=0 to length(m[length(m)-1])-1 do
form1.label1.Caption:=form1.label1.Caption+inttostr(m[i,j])+" ";
end;
end;
function getmax(m:ar2):integer;
var max,i,j:integer;
begin
if (length(m)>0)and(length(m[length(m)-1])>0) then
max:=m[length(m)-1,length(m[length(m)-1])-1];
for i:=0 to length(m)-1 do
for j:=0 to length(m[length(m)-1])-1 do
if m[i,j]>max then max:=m[i,j];
result:=max;
end;
procedure writemax(m:ar2);
begin
if m<>nil then
form1.Label1.Caption:=form1.Label1.Caption+#10#13+"Max: "+inttostr(getmax(m));
end;
procedure TForm1.FormCreate(Sender: TObject);
var la:ar2;
begin
randomize;
setlength(la,random(10),random(10));
fillmatrix(la);
la:=modifmatrix(la);
writematrix(la);
writemax(la);
end;
end.



Страницы: 1 вся ветка

Текущий архив: 2002.05.20;
Скачать: CL | DM;

Наверх




Память: 0.47 MB
Время: 0.013 c
3-64475
Aleksandr
2002-04-22 11:45
2002.05.20
Как установить таблице хитрый язык?


1-64728
AVeR
2002-05-04 07:31
2002.05.20
Получить имя файла из полного пути


1-64743
VS2001
2002-04-30 05:56
2002.05.20
Как узнать что программа (модуль из DLL) уже запущена


1-64735
Шаповалов Кирилл
2002-05-07 09:31
2002.05.20
Вывод Timage поверх TWebBrowser


1-64688
robbit
2002-05-03 10:05
2002.05.20
Наследник TForm