Другие языки программирования и технологии
Составить программу в 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
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 не магический
...
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 не магический
...
Похожие вопросы
- Помогите составить программу на pascal
- Помогите составить программу в Pascal ABC
- Помогите составить программу в Pascal
- Нужно составить программу на Pascal.
- Помогите составить программу в pascal? срочно надо!!!!
- Помогите составить программу на Pascal.
- Помогите составить программу в Pascal или С++(а лучше и там и там)
- Составить программу на Pascal
- Помогите составить программу в Pascal
- помогите составить программу на Pascal дана матрица NxN.Найти наибольший элемент строки K.