Партнерка на США и Канаду по недвижимости, выплаты в крипто
- 30% recurring commission
- Выплаты в USDT
- Вывод каждую неделю
- Комиссия до 5 лет за каждого referral
требуется составить программу, выполняющую указанные в варианте преобразования с квадратной А(N, N) матрицей. При этом следует нарисовать исходную матрицу с индексами ее элементов и преобразованную с новым содержимым (аналогично рисункам к примеру 6.4). Если в условии задачи речь идет о перемещении элементов матрицы, то в качестве исходных данных лучше брать не произвольные числа, а индексы этих элементов (например содержимым клетки А(2,5) лучше взять число 25). Тогда легче разработать алгоритм программы, написать ее и отладить. Программа должна строиться таким образом, чтобы существовала возможность ее использования с массивами любой размерности, содержащими произвольные элементы. В программе должна быть предусмотрена выдача на печать исходных и преобразованных матриц и других, указанных в задании, результатов вычислений. Если решение задачи критично к факту четности/нечетности числа столбцов или строк, студент сам выбирает этот параметр. Ниже для пояснения сути задания ниже некоторые варианты сопровождаются рисунками
Моё задание №19
13÷20. Заполнить матрицу А(N, N) числами натурального ряда в последовательности, указанной на рисунке и найти их сумму.
Пример 6-4. Заполнить двумерный массив A(N, N) элементами натурального ряда (т. е. числами 1,2,3, и т. д.), начиная с нижнего правого угла в направлении, показанном пунктиром на рис. 6.4а. Чтобы выявить необходимые законы перемещения по матрице, в ее клетках показаны индексы элементов. Способов решения таких такого рода задач может быть несколько.
Заметим, что в зависимости от того, с какой стороны матрицы мы находимся, нам необходимо совершать следующие движения:
1). если у правой стороны матрицы, то вверх на одну клетку и вниз-влево по диагонали до нижней границы;
2). если у нижней границы, то влево на одну клетку и вверх-вправо по диагонали до правой границы;
3). у верхней границы – влево на одну клетку и вниз-влево до левой границы;
4). у левой границы – вверх на одну клетку и вверх-вправо до правой границы.
В любом случае движение прекращается при достижении клетки A(1,1). Результат заполнения массива А показан на рис. 6.4б.

Программа приведена ниже. Здесь ST – номер текущей строки (первоначально N, поскольку движение начинается с последней ячейки массива A(N, N)), KL – номер текущей колонки (первоначально N), K – растущее значение натурального ряда (первоначально 1). Самый внешний цикл (while k<n*n) ограничивает все действия достижением растущим значением натурального ряда K значения N*N, поскольку именно столько клеток имеется в квадратной матрице размерности N. Внутри цикла организованы четыре разные группы операций в зависимости от того, какое из четырех типовых элементарных действий (см. выше) выполняется. Определяет тип действия оператор if/else if, в котором выясняется, где именно вы находитесь. Внутри каждого IF организован цикл while, в котором осуществляются необходимые перемещения в матрице в соответствии с одним из четырех алгоритмов. По завершении всех действий, т. е. после достижения последней клетки (в нашем случае A(1,1)), выполняется последовательная печать строк матрицы A с заполненными клетками.
program P6-4;
uses crt;
var n, i,j, st, kl, k:integer;
a:array [1..10,1..10] of integer;
begin;
clrscr;
write(‘укажите размерность матрицы (до 10)’); readln(n);
st:=n; kl:=n; k:=1; {текущие строка и колонка, элементы натурального ряда}
a[st,kl]:=k; {начальному элементу a(n, n) присваивается 1}
{цикл - конец вычислений по достижении последнего элемента массива}
while k<n*n do begin
{правая сторона – 1 клетка вверх}
if (kl=n) and (st>1) then begin st:=st-1; k:=k+1; a[st, kl]:=k;
while (st<n) and (kl>0) do begin st:=st+1; kl:=kl-1; k:=k+1; a[st, kl]:=k end; {далее вниз-влево}
end
{нижняя сторона – 1 клетка влево}
else if (kl>1) and (st=n) then begin kl:=kl-1; k:=k+1; a[st, kl]:=k;
while (st>1) and (kl<n) do begin st:=st-1; kl:=kl+1; k:=k+1; a[st, kl]:=k end; {далее вверх-вправо}
end
{верхняя сторона – 1 клетка влево}
else if (kl>1) and (st=1) then begin kl:=kl-1; k:=k+1; a[st, kl]:=k;
while (st<n) and (kl>1) do begin st:=st+1; kl:=kl-1; k:=k+1; a[st, kl]:=k end; {далее вниз-влево}
end
{левая сторона – 1 клетка вверх}
else if(kl=1) and (st>1) then begin st:=st-1; k:=k+1; a[st, kl]:=k;
while (st>1) and (kl>0) do begin st:=st-1; kl:=kl+1; k:=k+1; a[st, kl]:=k end; {далее вверх-вправо}
end;
end;
writeln('вывод результата');
for i:=1 to n do begin for j:=1 to n do write(a[i, j]:4); writeln; end;
end.


