Главная страница
    Top.Mail.Ru    Яндекс.Метрика
Форум: "Основная";
Текущий архив: 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
1-64621
SPeller
2002-05-05 14:08
2002.05.20
DLL и её параметры


14-64812
Valentain
2002-04-11 10:24
2002.05.20
Проверка работоспособности под разными ОСями


4-64864
Velocity
2002-03-16 16:40
2002.05.20
StatusBar и ToolBar на API


3-64549
ao1973
2002-04-23 21:25
2002.05.20
BDE не хочет юзать MSACESS


14-64832
LazorenkoX
2002-04-11 17:44
2002.05.20
KOL





Afrikaans Albanian Arabic Armenian Azerbaijani Basque Belarusian Bulgarian Catalan Chinese (Simplified) Chinese (Traditional) Croatian Czech Danish Dutch English Estonian Filipino Finnish French
Galician Georgian German Greek Haitian Creole Hebrew Hindi Hungarian Icelandic Indonesian Irish Italian Japanese Korean Latvian Lithuanian Macedonian Malay Maltese Norwegian
Persian Polish Portuguese Romanian Russian Serbian Slovak Slovenian Spanish Swahili Swedish Thai Turkish Ukrainian Urdu Vietnamese Welsh Yiddish Bengali Bosnian
Cebuano Esperanto Gujarati Hausa Hmong Igbo Javanese Kannada Khmer Lao Latin Maori Marathi Mongolian Nepali Punjabi Somali Tamil Telugu Yoruba
Zulu
Английский Французский Немецкий Итальянский Португальский Русский Испанский