Всем доброго времени суток. Пишу я программу для решения слау над полем простых чисел (но это не суть).
Проблема моя связана с тем что при заполнении последней строки массива программа крашится и выдает:
Exception EAccessViolation in module Gauss.exe at 0000A340. Access violation at address 0040A340 in module 'Gauss.exe'. Write of address 000 00000.
В чем дело никак не пойму.
Код программы.
Код:
program Gauss;
{$APPTYPE CONSOLE}
uses
SysUtils,
math,
windows;
var n,i,j,m,p:integer;
b:array of integer;
x:array of integer;
a:array of array of integer;
function Zetta(z: integer):integer;
begin
If z>=p then Zetta:=z mod p;
If z<0 then Zetta:=p-(abs(z) mod p);
end;
begin
setconsoleoutputcp(1251);
setconsolecp(1251);
write('Введите чиcло p: ');readln(p);
write('Введите число уравнений: ');readln(m); m:=m-1;
write('Введите число неизвестных: ');readln(n); n:=n-1;
SetLength(a,m,n);
SetLength(b,m);
SetLength(x,n);
writeln;
writeln('A*X = B');
writeln;
for i := 0 to m do
begin
for j := 0 to n do
begin
write('A[',i+1,',',j+1,'] = '); readln(a[i,j]);
a[i,j]:=Zetta(a[i,j]);
end;
write('B[',i+1,'] = '); readln(b[i]);
b[i]:=Zetta(b[i]);
end;
readln
end.