Вот я написал код, который должен выполнять вот такое задание: Главную диагональ заменить на единицы, выше главной - элементы равны сумме индексов, ниже главной диагонали - разности индексов. первые два этапа выполняются правильно и вообще выполняются, а вот при выполнении третьего винда пишет, что произошла ошибка в памяти по адресу ....... пропустить / закрыть
Вот исходник:
| Код | program diagonal; uses crt; const n=7; var a:array[1..n,1..n] of integer; i,k,s,g:shortint;
procedure zapoln; begin randomize; for i:=1 to n do begin for k:=1 to n do begin a[i,k]:=random(100)-random(50); end; end; end;
procedure vivod; begin Writeln('‚лў®¤ ¬ ббЁў ў ўЁ¤Ґ ¬ ваЁжл'); for i:=1 to n do begin for k:=1 to n do begin if i=k then textcolor(2) else textcolor(15); Write(a[i,k]:5); end; Writeln; end; textcolor(15); end;
procedure ex1; BEGIN for i:=1 to n do a[i,i]:=1; END;
procedure ex2; BEGIN s:=0; for i:=2 to n do begin s:=s+1; a[i,s]:=i-s; end; END;
procedure ex3; {вот при выполнении этой процедуры происходит ошибка и паскаль зависает} BEGIN s:=1; for i:=1 to n do begin s:=s+1; g:=i+s; a[i,s]:=g; {пробовал и так a[i,s]:=i+s -разницы никакой} end; END;
BEGIN clrscr; zapoln; vivod; ex1; ex2; ex3; {подключение процедуры 3} vivod; readln; END.
|
|