Собственно готово Программа вызывает процедуру, в которой находит сумму каждой диагонали и выводит на экран, при совпадении с заданным числом.
| Код | uses CRT; { библиотека для использования функции очистки экрана } {--------------------------------------------------------------} const nx = 4; ny = nx; var n: array[1..nx,1..ny] of integer; x,y,_x,_y,m,sum: integer; {--------------------------------------------------------------} { *** проверка суммы диагоналей и вывод на экран нужных значений *** } procedure ShowSum (mysum: integer); begin for x:=1 to nx do begin _y:=1; sum:=0; for _x:=x to nx do begin sum:=sum+n[_x,_y]; _y:=_y+1 end; if (sum = mysum) then writeln('Диагональ: ',x,':',1); end; { проверка диагоналей по оси x }
for y:=2 to nx do begin _x:=1; sum:=0; for _y:=y to nx do begin sum:=sum+n[_x,_y]; _x:=_x+1 end; if (sum = mysum) then writeln('Диагональ: ',1,':',y); end; { проверка диагоналей по оси y, за исключением общей с осью x } end; {--------------------------------------------------------------} begin clrscr; { очистка экрана } randomize; { если убрать, то случайность не зависит от времени } for y:=1 to 4 do begin writeln; for x:=1 to 4 do begin [x,y]:=random(9); write(n[x,y],' '); end; end; { заполняем массив случайным образом }
m:=10; { задаваемое число }
writeln; writeln; writeln(' - Диагонали, сумма которых равна ',m,' -'); writeln; { лирическое отступление ;) }
ShowSum(m); { вызов процедуры проверки суммы диагоналей } end.
|
На всякий случай, напомню, что количество диагоналей равно сумме длинн матрицы - 1. |