
27.01.2013, 22:11
|
Активный
|
|
Регистрация: 07.08.2012
Сообщения: 258
Версия Delphi: Delphi 7
Репутация: 11
|
|
Цитата:
Сообщение от ART
1000 рублей
|
Ну зачем же так?
Я вот например решил человеку помочь..
Вот решение задачи №8
Код:
program Project1;
{$APPTYPE CONSOLE}
uses
SysUtils;
const matr_max = 50;
var matrica : array[1..matr_max, 1..matr_max] of integer;
matrica_count : integer;
q, r, c, t : integer;
bMagicSquare : Boolean;
begin
Write('Razmer matrix (N<=', matr_max,'): '); ReadLn(matrica_count);
if matrica_count > matr_max then matrica_count := matr_max;
{ забиваем матрицу значениями}
WriteLn('Matrix');
for r := 1 to matrica_count do
begin
for c := 1 to matrica_count do
begin
Read(matrica[r, c]);
//Write(matrica[r, c]:3, ' ');
end;
WriteLn;
end;
bMagicSquare := True;
{ считаем сумму элементов первой строки }
t := 0;
for c := 1 to matrica_count do
t := t + matrica[1, c];
{ работаем по строкам }
for r := 2 to matrica_count do
begin
q := 0;
for c := 1 to matrica_count do
q := q + matrica[r, c];
if q<>t then
begin
bMagicSquare := False;
break;
end;
end;
if bMagicSquare then
begin
{ работаем по столбцам }
for r := 1 to matrica_count do
begin
q := 0;
for c := 1 to matrica_count do
q := q + matrica[c, r];
if q<>t then
begin
bMagicSquare := False;
break;
end;
end;
if bMagicSquare then
begin
{проверяем диагонали}
{главная диагональ}
q := 0;
for c := 1 to matrica_count do
q := q + matrica[c, r];
if q=t then
begin
{вторая диагональ}
r:=1;
c:=matrica_count;
q:=0;
while r<=matrica_count do
begin
q:=q+matrica[r,c];
Inc(r);
Dec(c);
end;
if q<>t then
bMagicSquare := False;
end;
end;
end;
{ выводим результаты }
if bMagicSquare then
WriteLn('Matrix - Magic Square')
else
WriteLn('Matrix - is not Magic Square');
ReadLn;
ReadLn;
end.
|