Предыдущий уровень изложения текущего раздела   Текущий уровень изложения предыдущего раздела   Текущий уровень изложения следующего раздела   Следующий уровень изложения текущего раздела   Уровень: Глоссарии:


ДВУМЕРНЫЕ МАССИВЫ

Пример:

Составить из чисел от 1 до К*К магический квадрат, в котором суммы чисел в каждом столбце, в каждой строке или диагонали одинаковы. Используем эвристический алгоритм, который позволяет построить магический квадрат, длина стороны которого нечетна. Все расставляемые числа делятся на группы от 1 до К, от К+1 до 2*К и так далее. Числа первой группы размещаются так, что в каждой строке и в каждом столбце находится ровно одно из них. Этот процесс повторяется для всех групп чисел.

Запишем план алгоритма:

Program MAGKV;
const K=7;
var i, n, c: Integer;
 kv: Array[1..K,1..K] of Integer;
begin
 i:=1;  n:=K div 2+1;
 for c:=1 to K*K do begin
 kv[i,n]:=c;
 if c mod K = 0
 then i:=i+1
 else begin
 dec(i); inc(n);
 if i <=0 then i:= k;
 if n > K then n:=1
 end
 end;
 for i:=1 to K do begin
 for n:=1 to K do Write(kv[i,n]:4);
 Writeln
 end
end.