Цитата:
Сообщение от Ol'ga
помогите мне исправить ошибки и как мне сумму вычислить??
|
Помогаю. Исправил. Вот так (выход я сделал по Esc):
Код:
uses crt;
type
matrix=array[1..10,1..10] of integer;
var
a:matrix;
i,j,n,x,y:byte;
Sum:Word;
ch:char;
procedure vvod(var ma:matrix; n:integer);
var i,j:integer;
begin
for i:=1 to n do
for j:=1 to n do
ma[i,j]:=random(10);
end;
procedure print(ma:matrix; n:integer);
var i,j:integer;
begin
clrscr;
for i:=1 to n do
begin
for j:=1 to n do
write(ma[i,j]:2);
writeln;
end;
writeln;
end;
Procedure Calc_Sum;
var xs,ys:byte;
begin
if (x mod 2)=0 then
begin
xs:=x;
ys:=y;
gotoxy(1,n+1);
Sum:=Sum+a[y,(x div 2)];
write('Sum= ',Sum:3);
x:=xs;
y:=ys;
gotoxy(x,y);
end;
end;
BEGIN
clrscr;
x:=1;
y:=1;
write('vvedite razmer kvadratnoy matrix: ');
readln(n);
if n>10 then n:=10;
vvod(a,n);
print(a,n);
Sum:=0;
gotoxy(1,n+1);
write('Sum= ',Sum:3);
gotoxy(1,1);
x:=1;
y:=1;
while true do
begin
ch:=readkey;
if ch=#27 then exit;
if (ch=#77) and (x<2*n) then
begin
x:=x+1;
gotoxy(x,y);
Calc_Sum;
end;
if (ch=#75) and (x>1) then
begin
x:=x-1;
gotoxy(x,y);
Calc_Sum;
end;
if (ch=#72) and (y>1) then
begin
y:=y-1;
gotoxy(x,y);
Calc_Sum;
end;
if (ch=#80) and (y<n) then
begin
y:=y+1;
gotoxy(x,y);
Calc_Sum;
end;
end;
END.