Главная » Статьи » Задачи по программированию

Ма­ги­че­ским квад­ра­т

Тре­бу­ет­ся со­ста­вить про­грам­му, ко­то­рая про­ве­ря­ет, яв­ля­ет­ся ли введённая с кла­ви­а­ту­ры це­ло­чис­лен­ная квад­рат­ная мат­ри­ца раз­ме­ром 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;


 

 

 

 

 

 

 

 

 

 

 

 

Категория: Задачи по программированию | Добавил: shypuk (04.04.2014)
Просмотров: 1657 | Рейтинг: 0.0/0
Всего комментариев: 0
Добавлять комментарии могут только зарегистрированные пользователи.
[ Регистрация | Вход ]