Turbo Pascal для начинающих




Задача 173


{ Подводит итоги Олимпийских игр } const
N=10; {количество стран-участниц }
strana: array[1..N] of string[9]=('Австрия','Германия',
'Канада','Китай','Корея','Норвегия','Россия', 'США','Финляндия'array[1..МАХ,1..MAX] of integer; ( матрица } n: integer; { размер проверяемой матрицы } ok:boolean; { TRUE - матрица является маг. квадратом} i,j: integer; { индексы массива }
sum: integer; { сумма эл-тов главной диагонали матрицы ) temp: integer;{ сумма элементов текущей строки, столбца или второй диагонали матрицы }
begin
write('Введите размер матрицы (3..4) ',
'и нажмите <Enter> ->'); readln(n);
Writeln('Введите строки матрицы'); Writeln('После ввода строки',п,' целых чисел,',
1 нажимайте <Enter>'); for i:=1 to n do begin
write ('->');
for j:=l to n-1 do read(a[i,j]); readln(a[i,n]); end;
ok:=TRUE; { пусть матрица - магический квадрат } sum:=0;
{ вычислим сумму элементов главной диагонали } for i:=1 to n do sum:=sum+a[i,i];
{ вычисляем суммы по строкам}
i:=l;
repeat
temp:=0; ( сумма эл-тов текущей строки }
for j:=l to n do temp:=temp+a[i,j];
i:=i+l;
if temp <> sum then ok:=FALSE; until (not ok) or (i > n) ;
if ok then
{ здесь сумма элементов каждой строки равна сумме эл-тов главной диагонали }
begin
{ вычисляем суммы по столбцам }
repeat
temp:=0; { сумма эл-тов текущего столбца } . for i:=l to n do temp:=temp+a[i,j]; j:=j+l;
if temp <> sum then ok:=FALSE; until (not ok) or (j > n) ; if ok then
{ здесь сумма эл-тов каждой строки
равна сумме эл-тов каждого столбца и равна сумме эл-тов главной диагонали} begin
( вычислим сумму эл-тов второй
главной диагонали } temp:=0; j:=n;
for i:=l to n do begin
temp:=temp+a[i,j]; j:=j-l end;
if temp <> sum then ok:=FALSE; end; end;
write('Введенная матрица '); if not ok
then write('не ') ;
writeln('является магическим квадратом.'); readln; end.









Начало    Назад    Вперед