Форум: "Основная";
Текущий архив: 2002.05.20;
Скачать: [xml.tar.bz2];
ВнизКак в подпрограмму передать динамический двумерный массив? Найти похожие ветки
← →
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;
Скачать: [xml.tar.bz2];
Память: 0.45 MB
Время: 0.006 c