Создан заказ №1743966
13 февраля 2017
Заполнить двумерный массив размерностью NxN (N нечетное число) целыми числами от 1 до N*N по следующим правилам
Как заказчик описал требования к работе:
Заполнить двумерный массив размерностью NxN (N нечетное число) целыми числами от 1 до N*N по следующим правилам:
a) единица помещается в среднюю клетку первой строки;
b) заполнение массива происходит по диагоналям вправо и вверх;
c) при достижении верхней строки следующее число помещается в нижню
ю строку так, как будто она находится над верхней строкой;
d) при достижении крайнего правого столбца следующее число помещается в крайний левый столбец так, как будто он находится около крайнего правого столбца;
e) при достижении верхней клетки крайнего правого столбца следует опуститься на одну строку ниже в вертикальном порядке и продолжать заполнение клеток по правилу;
f) если клетка уже заполнена, следует опуститься на одну строку ниже в вертикальном порядке и продолжать заполнение клеток по правилу.
СРОЧНО!!!
подробнее
Фрагмент выполненной работы:
Заполнить двумерный массив размерностью NxN (N нечетное число) целыми числами от 1 до N*N по следующим правилам:
a) единица помещается в среднюю клетку первой строки;
b) заполнение массива происходит по диагоналям вправо и вверх;
c) при достижении верхней строки следующее число помещается в нижнюю строку так, как будто она находится над верхней строкой;
d) при достижении крайнего правого столбца следующее число помещается в крайний левый столбец так, как будто он находится около крайнего правого столбца;
e) при достижении верхней клетки крайнего правого столбца следует опуститься на одну строку ниже в вертикальном порядке и продолжать заполнение клеток по правилу;
f) если клетка уже заполнена, следует опуститься на одну строку ниже в вертикальном порядке и продолжать заполнение клеток по правилу.
Решение:
Это алгоритм построения магического квадрата нечетного порядка
Магическая константа (сумма чисел по строке, столбцу или диагоналям) может быть найдена по формуле Баше де Мезириака:
M=m*m2+12
Начало
Блок-схема процедуры rule_f:
i=0 and
j=n+1
-
+
-
+
i=0
i=2; j=n
i=n
-
+
j=n+1
j=1
-
+
a[i, j] <> 0
i=i+2
j=j-1
a[i, j]=m
Конец
Начало
Блок-схема процедуры rule_b:
i=i-1
j=j+1
Конец
Начало
Блок-схема:
Ввод n
-
+
(n mod 2)=0
i=1,n
Вывод «Ошибка»
j=1,n
a[i;j]=0
i=1, j=(n+1)div2
a[i;j]=1
m=2, sqr(n)
Rube_b
Rube_f
Вывод n*(sqr(n)+1)) div 2
j=1,n
Вывод a[i,j]
Конец
Описание структуры программы:
Для выполнения программы нам понадобятся 2 процесса, обозначим их как rule_b, который заполняет массив по диагонали вправо и вверх и rule_f, который определяет если клетка уже заполнена, то опускается на одну строку ниже в вертикальном порядке и продолжает заполнение клеток по правилу.
Для заполнения массива используется несколько вложенных циклов For.
Код программы:
const
k = 29;
var
m, n, i, j: integer;
a: array[1..k, 1..k] of integer;
procedure rule_f;
begin
if (i = 0) and (j = n + 1) then begin
i := 2;
j := n
end
else begin
if i = 0 then i := n;
if j = n + 1 then j := 1
end;
if a[i, j] <> 0 then
begin
i := i + 2;
j := j - 1;
rule_f
end
else
a[i, j] := m
end;
procedure rule_b;
begin
i :...Посмотреть предложения по расчету стоимости
Заказчик
заплатил
заплатил
20 ₽
Заказчик не использовал рассрочку
Гарантия сервиса
Автор24
Автор24
20 дней
Заказчик принял работу без использования гарантии
14 февраля 2017
Заказ завершен, заказчик получил финальный файл с работой
5
Заполнить двумерный массив размерностью NxN (N нечетное число) целыми числами от 1 до N*N по следующим правилам.jpg
2017-02-17 17:46
Последний отзыв студента о бирже Автор24
Общая оценка
5
Положительно
Все очень быстро и качественно. Всегда на связи. С полным объяснением хода работы.