ОИ
Олеся Ильина

Составить программу в pascal free

Составить программу проверяющую образует ли элементы двухмерного массива магический квадрат, в магическом квадрате сумма чисел по всем вертикалям, всем горизонталям и двум диагоналям одинаковы. Размерность массива должна задаваться у пользователя.

ИЗ
Игорь Захаров

program N89853831;
var
a: array of array of word;
i, j, n: byte;
sum, si, sj: longint;
f: boolean;
begin
write('Введите порядок матрицы: ');
readln(n);
setlength(a, n, n);
writeln('Введите элементы матрицы: ');
si := 0;
sj := 0;
for i := 0 to n - 1 do
for j := 0 to n - 1 do
begin
write('A[', i + 1, ',', j + 1, ']: ');
readln(a[i, j]);
if i = j then
si := si + a[i, j];
if i = n - j - 1 then
sj := sj + a[i, j]
end;
f := si = sj;
sum := si;
i := 0;
while f and (i < n) do
begin
si := 0;
sj := 0;
for j := 0 to n - 1 do
begin
si := si + a[i, j];
sj := sj + a[j, i]
end;
f := (si = sum) and (sj = sum);
inc(i)
end;
write('Введённая матрица ');
if not f then
write('не ');
writeln('является магическим квадратом. ');
readln
end.

Рустам Халиков
Рустам Халиков

var size: integer;
function sum(xs,ys, x_p, y_p: integer ):integer;
var x,y, s: integer;
begin
x := xs; y := ys; s := 0;
while (x < size) and (y < size) do begin inc(s, a[x,y]); inc(x,x_p); inc(y,y_p); end;
sum := s;
end;
var i, s: integer;
begin
...
s := sum(0,0,1,0);
if (sum(0,0,1,1) <> s) or (sum(size-1,0,-1,1) <> s) then не магический
for i := 0 to size do
if (sum(i,0,0,1) <> s) or (sum(0,i,1,0) <> s) then не магический
...

Похожие вопросы
составить программу в ABC Pascal
Помогите составить программу в С++ или Pascal (а лучше и там и там)
Задачи в программе Free Pascal
Составить программу в Pascal...
Помогите составить программу в Pascal
Составить программы в pascal
Помогите пожалуйста написать программу в Free Pascal
Как открыть Free Pascal???
Pascal .Помогите составить программу на яззыке Pascal. (фото)
Pascal .Помогите составить программу на яззыке Pascal (фот. о)