Главная страница
    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
3-64509
wHammer
2002-04-22 08:54
2002.05.20
Текст в DBEdit


1-64660
kull
2002-05-08 23:09
2002.05.20
Процедура Insert.......


3-64545
Alexnader
2002-04-19 23:51
2002.05.20
большие объемы записей в гридах


1-64568
PaRL
2002-05-04 08:21
2002.05.20
DLL


14-64800
perov
2002-04-10 13:57
2002.05.20
что случилось с сайтом www.delphiplus.org?





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
Английский Французский Немецкий Итальянский Португальский Русский Испанский