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

Вниз

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

 
Kolan ©   (2004-10-27 18:06) [0]

function TForm1.Get_Finder(A:array of extended):extended;
begin
 result:=A[1,1]*A[2,2]-A[1,2]*A[2,1];
end;
Получаю ошибку array type required. Я не ток массив передпл что-ли


 
Amoeba ©   (2004-10-27 18:09) [1]

type
 MyArr = array of array of extended;

function TForm1.Get_Finder(A:MyArr):extended;


 
Ega23 ©   (2004-10-27 18:12) [2]

Type
TMyArray=array of extended;

function TForm1.Get_Finder(A:TMyArray):extended;
begin
result:=A[1,1]*A[2,2]-A[1,2]*A[2,1];
end;


Попробуй так.


 
Ega23 ©   (2004-10-27 18:13) [3]

Ну да, забыл...
Конечно array of array of extended


 
Kolan ©   (2004-10-27 18:24) [4]

Че т о я тупю
type
DubleArr = array of array of extended;

Вот Ф-ция

procedure TForm1.Solve_System_by_Gauss(A:DubleArr; B:array of extended;var X:array of extended);
var
A_Rev:array [1..2,1..2] of extended;
begin
{Find_Reversed_Matrix(A,A_Rev);  }
end;


А вот я её вызываю

procedure TForm1.Solve_Equation();

var
J:array[1..2,1..2]of extended;    {Ìàòðèöà ßêîáè}
X_Start:array[1..2]of extended;  {Íà÷àëüíîå ïðèáëèæåíèå}
i:integer;  {Ñ÷åò÷èêè}
a,k:real; {Ïàðàìåòðû}
X_Next:array[1..2] of extended;
begin
a:=1;
k:=1;
X_Start[1]:=strtofloat(Get_X0());   {Íà÷àëüíîå ïðèáëèæåíèå}
X_Start[2]:=strtofloat(Get_Y0());   {Íà÷àëüíîå ïðèáëèæåíèå}

J[1,1]:=df_dx(X_Start[1],X_Start[2],a,k);
J[1,2]:=df_dy(X_Start[1],X_Start[2],a,k);
J[2,1]:=dg_dx(X_Start[1],X_Start[2],a,k);
J[2,2]:=dg_dy(X_Start[1],X_Start[2],a,k);

Solve_System_by_Gauss(J,X_Start,X_Next)
--Ошибка Incompatible types---
end;


 
Amoeba ©   (2004-10-27 18:27) [5]

И неудивительно. В заголовке ф-ии параметры B и X являются не динамическими а открытыми массивами. А это "две большие разницы".


 
begin...end ©   (2004-10-27 18:28) [6]


> [4] Kolan ©   (27.10.04 18:24)


> --Ошибка Incompatible types---

Ну так это естественно. Тип параметра, указанный в описании процедуры, не совпадает с типом передаваемой в неё переменной.


 
Ega23 ©   (2004-10-27 18:28) [7]

Ну всё правильно.
Обзови

type
TDubleArr = array of array of extended;
TSingleArr =  array of extended;

procedure TForm1.Solve_System_by_Gauss(A:DubleArr; B:TSingleArr; var X:TSingleArr);
var
A_Rev:array [1..2,1..2] of extended;
begin
{Find_Reversed_Matrix(A,A_Rev);  }
end;


Хотя я бы не стал настолько вольно обращаться со статическими и динамическими массивами.


 
Kolan ©   (2004-10-27 18:30) [8]

Так как же надо - то
PS устал я с этими матрицами. Основная задача вообше другая. Кстати в delphi нет процедур работы с матрицами?


 
Amoeba ©   (2004-10-27 18:34) [9]

Стандартных нет. Но существуют сторонние библиотеки.


 
begin...end ©   (2004-10-27 18:35) [10]


> [8] Kolan ©   (27.10.04 18:30)


> Так как же надо - то

Например - так, как написано в [7].

> Кстати в delphi нет процедур работы с матрицами?

Стандартных - нет. ИМХО. Если не считать SetLength для многомерных массивов. :-)


 
Ega23 ©   (2004-10-27 18:45) [11]

Всегда считал дин.массивы - злом. Нас в универе отправляли переделывать программу, если использовался дин.массив. всё через GetMem(N*SizeOf(TMyType)).


 
begin...end ©   (2004-10-27 18:48) [12]


> [11] Ega23 ©   (27.10.04 18:45)

Так ты, может быть, на Турбо Паскале писАл в универе? ;-)

Уж не знаю, за что динамические массивы можно злом считать...


 
Ega23 ©   (2004-10-27 18:51) [13]

Так ты, может быть, на Турбо Паскале писАл в универе? ;-)

Нет, Д5. Только нас учили базовым приёмом - указатели, выделение памяти, составление списков и т.п. Язык тут, ИМХО, не сильно важен.


 
Romkin ©   (2004-10-27 18:55) [14]

Ega23 ©  (27.10.04 18:51) [13] Ну если базовым - тогда да :)) Я ж еще на TP6 матрицы делал. Именно через GetMem. И функция была, которая возвращает указатель на элемент :)
Сколько крышечек в коде было...


 
Kolan ©   (2004-10-27 18:57) [15]

А не льза статически это сделать. Ведь A:array[1..n] of smth;
можно передать?


 
Kolan ©   (2004-10-27 19:00) [16]

Да и х с ним одномерным обойдусь. Думал все красиво сделать.


 
begin...end ©   (2004-10-27 19:02) [17]


> [15] Kolan ©   (27.10.04 18:57)

Если размерность массива больше 1, то всё равно придётся объявлять свой тип.
Но в случае статического массива, по-хорошему, придётся передавать в подпрограмму и действительное число строк и столбцов - ведь оно может меняться, я правильно понял твой случай? Так что уж лучше работать с динамическими массивами, предварительно объявив тип.
Если же массив - одномерный, то можно и открытым обойтись.


 
Ega23 ©   (2004-10-27 19:02) [18]

Сколько крышечек в коде было...

Эт-точно...  А ошибок-то..... Особенно если вызов рекурсивный...   :о)


 
begin...end ©   (2004-10-27 19:03) [19]


> [16] Kolan ©   (27.10.04 19:00)


> одномерным обойдусь. Думал все красиво сделать.

Вот тебе на. Матрица, и - одномерный массив? Или 2 одномерных массива?

Красивее не придумаешь...


 
Ega23 ©   (2004-10-27 19:04) [20]

Если честно, то я до сих пор боюсь этого SetLength....  :о)
Мне проще TList завести и с ним работать  :о)


 
Ega23 ©   (2004-10-27 19:06) [21]

Вот тебе на. Матрица, и - одномерный массив?

Конечно. Одномерный массив, размером N*M. По-сути, он и есть одномерный, это для удобства кодирования ты его многомерным сделать можешь. А реально - после окончания первой строки лежит начало второй. Индексирование - проще простого.


 
Kolan ©   (2004-10-27 19:07) [22]


> я правильно понял твой случай

Да нет я же как можно проше делаю, а то основное 3-4 ф-ции по 10-15 строк а работа сматрицами 8-10 да если еще универсално делать то...
А матрица у меня 2х2 и все



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

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

Наверх




Память: 0.52 MB
Время: 0.057 c
1-1098645916
CoolMan
2004-10-24 23:25
2004.11.14
Копирование n-ое кол-во файлов в один


14-1098451515
Вася (типа)
2004-10-22 17:25
2004.11.14
Про иппотечное кредитование


14-1098870383
Tor
2004-10-27 13:46
2004.11.14
Установка Apollo SQL 6.0


1-1099130115
Stype
2004-10-30 13:55
2004.11.14
String to PAnsiChar


1-1099051583
bloodman
2004-10-29 16:06
2004.11.14
Где можно найти информацию по теории распозанания текста