Матрицы и массивы
Помогите пожалуйста, как сделать так, чтобы массив начинался с x(0)= 30,00, а не с х(1)=30,00.
Такую же программу я делала на python, и там я использовала
if isum:
result.append(increase)
Видимо здесь в этом ошибка, но я не знаю какая, либо похожая функция на append() есть в паскале, либо как-то можно сделать по-другому.
program pr5;
uses crt, sysutils;
{$R-}
type
Tmas=^TTmas;{одна строка матрицы}
TTmas=array[0..0] of double;
Tmatr=^TTmatr;{матрица-массив указателей на строки}
TTmatr=array[0..0] of Tmas;
var
a:Tmatr;
res: Tmas;
val, increase : double;
i,j, n, m, counter, len:integer;
x:double;
isum:boolean;
begin
counter := 0;
write('N=');
readln(n);
write('M=');
readln(m);
getmem(a, sizeof(TTmas) * n * m);
for i:=0 to n - 1 do
getmem(a^[i], sizeof(double) * m);
// заполняем матрицу
for i:=0 to n - 1 do
begin
for j:=0 to m - 1 do
begin
write('x(' + IntToStr(i) + ',' + IntToStr(j) + ')=');
readln(val);
a^[i]^[j] := val;
end;
end;
// выводим матрицу
for i := 0 to n - 1 do
begin
for j := 0 to m - 1 do
write(a^[i]^[j]:6:2);
writeln;
end;
// создаем массив для результатов расчета
if n mod 2 = 0 then
begin
len := n div 2;
getmem(res, sizeof(double) * len);
end
else
begin
len := (n div 2) + 1;
getmem(res, sizeof(double) * len);
end;
//произведения четных строк матрицы
i := 0;
j := 0;
while(i < n) do
begin
increase := 1;
j := 0;
isum := False;
while(j < m) do
begin
x := a^[i]^[j];
if x - Trunc(x) = 0 then
begin
increase := increase * x;
inc(counter);
isum := True;
end;
inc(j);
end;
if not isum then {что-то не так с этим блоком}
increase := 0;
res^[Trunc(i/2)] := increase;
i := i + 2;
end;
// выводим результат
if counter = 0 then
begin
writeln('В матрице в четных строках только дробные числа')
end
else
begin
for i:=0 to len - 1 do
begin
if res^[i] <> 0 then
begin
write('Массив: x(');
write(i);
write(') = ');
write(res^[i]:4:2);
writeln;
end;
end;
end;
// освобождаем выделенную память
for i:=0 to n - 1 do
freemem(a^[i], sizeof(double) * n);
freemem(a,sizeof(TTmas) * n * m);
if n mod 2 = 0 then
freemem(res, sizeof(double) * n div 2)
else
freemem(res, sizeof(double) * ((n div 2) + 1));
end.
