Mail.ruПочтаМой МирОдноклассникиВКонтактеИгрыЗнакомстваНовостиКалендарьОблакоЗаметкиВсе проекты

Delphi 7| Передача двумерного массива в функцию

Genadiy Genadiy Ученик (106), открыт 1 неделю назад
Здравствуйте, передать двумерный массив в функцию.

 function TForm3.GaussSolve(matrix: array of array of Double; rows, cols: Integer): TStringList; 
var
i, j, k: Integer;
factor, sum: Double;
solutions: TStringList;
begin
solutions := TStringList.Create;

for i := 0 to rows - 1 do
begin
for j := i + 1 to rows - 1 do
begin
factor := matrix[j][i] / matrix[i][i];
for k := i to cols do
matrix[j][k] := matrix[j][k] - factor * matrix[i][k];
end;
end;

for i := rows - 1 downto 0 do
begin
sum := 0;
for j := i + 1 to cols - 1 do
sum := sum + matrix[i][j] * StrToFloat(solutions[cols - 1 - j]);
solutions.Add(FloatToStr((matrix[i][cols] - sum) / matrix[i][i]));
end;

Result := solutions;
end;
Функция которая мне нужна
Так я ее задаю в Type
 function GaussSolve(matrix: array of array of Double; rows, cols: Integer): TStringList; 
Но компилятор постоянно ругается типо нельзя так задавать в тайп. Пишет либо Expected ':' but '=' found , либо [Error] Unit3.pas(89): Identifier expected but 'ARRAY' found. Помогите как всен это исправить. Массив должен быть не статичным по размеру. В другой процедуре я задаю ему размер.
2 ответа
Dmitry Оракул (59713) 1 неделю назад
Попробуй вместо
 array of array of Double 
Написать так
 array of TArray 
Аглая Шниц Искусственный Интеллект (139417) 1 неделю назад
можно объявить тип "строка матрицы" и передавать массив строк. или вообще:
 type
TMatrixRow = array of Double;
TMatrix = array of TMatrixRow;

function TForm3.GaussSolve(matrix: TMatrix; rows, cols: Integer): TStringList;
...
Genadiy GenadiyУченик (106) 1 неделю назад
Та же ошибка, я смотрел в интернете, у все все работает, у меня не получается. Может с самим делфи что то?
Аглая Шниц Искусственный Интеллект (139417) с дельфями вряд ли. а слово type не забыл?
Genadiy GenadiyУченик (106) 1 неделю назад
 type 
TForm3 = class(TForm)
...
TMatrixRow = array of Double;
TMatrix = array of TMatrixRow;
function TForm3.GaussSolve(matrix: TMatrix; rows, cols: Integer): TStringList;
Вот мой тайп сейчас
Аглая Шниц Искусственный Интеллект (139417) Genadiy Genadiy, а должно быть что-то типа такого:
 unit Unit3;

type
    TMatrixRow = array of Double; 
    TMatrix = array of TMatrixRow;

    TForm3 = class(TForm)
    .... 
Genadiy GenadiyУченик (106) 1 неделю назад
Спасибо вам большое! Наконец то разобрался благодаря вам. Спасибо
Похожие вопросы