Главная » Статьи » Задачи по программированию |
Магическим квадрат
Требуется составить программу, которая проверяет, является ли введённая с клавиатуры целочисленная квадратная матрица размером 10х10 "магическим квадратом", то есть равны ли между собой суммы элементов каждой строки, каждого столбца и суммы элементов каждой диагонали. Код
uses crt;
const n=10; var a:array[1..n,1..n] of integer; ok:boolean; i,j,k:integer; sum:integer; temp:integer; begin for i:=1 to n do for j:=1 to n do readln(a[i,j]); Ok:=True; sum:=0; //считаем главную диагональ for i:=1 to n do sum:=sum+a[i,i]; {Вычисляем сумму по строкам} i:=1; repeat temp:=0; for j:=1 to n do temp:=temp+a[i,j]; i:=i+1; if temp <> sum then ok:=False; until (ok=false) or (i>n); //если сумма по строкам подходит, то вычисляем по столбцам if ok=true then begin j:=1; repeat temp:=0; for i:=1 to n do temp:=temp+a[i,j]; j:=j+1; if temp <> sum then ok:=False; until (ok=false) or (j>n); end; //далее по диагоналям if ok=true then begin k:=1; repeat temp:=0; for i:=1 to n do begin j:=i+k; if j>n then j:=j-n; temp:=temp+a[i,j]; end; k:=k+1; if temp <> sum then ok:=False; until (ok=false) or (k>=n); end; if ok=true then begin k:=1; repeat temp:=0; for i:=1 to n do begin j:=k-i; if j<1 then j:=j+n; temp:=temp+a[i,j]; end; k:=k+1; if temp <> sum then ok:=False; until (ok=false) or (k>n); end;
| |
Просмотров: 1657 | Рейтинг: 0.0/0 |
Всего комментариев: 0 | |