За у пользователя количество шагов сдвига и направление. Условиться, что если вводится отрицательное целое, то сдвиг выполняется влево на указанное абсолютное значение, если вводится положительное число, то сдвиг вправо.
Заполнить исходный массив и вывести его на экран.
Выполнять внешний цикл столько раз, сколько шагов было указано.
Если было введено отрицательное число, то выполнить цикл от первого элемента до предпоследнего, перезаписав в нем значение каждой очередной ячейки на значение последующей. Записать в последнюю ячейку 0.
Иначе, выполнить цикл от последнего элемента до второго, записывая в каждую текущую ячейку значение предыдущей. В первую ячейку записать 0.
Var matrix1:array [,] of real; n:integer; tmp:real; begin write('Введи размерность матрицы:'); readln(n); matrix1:=new real[n,n]; for var i:=0 to n-1 do begin for var j:=0 to n-1 do begin matrix1[i,j]:=Random(100); write(matrix1[i,j]:4); end; writeln; end; writeln('Поменяли:'); for var j:=0 to n-1 do begin tmp:=matrix1[j,n-1]; matrix1[j,n-1]:=matrix1[n-1,j]; matrix1[n-1,j]:=tmp; end; for var i:=0 to n-1 do begin for var j:=0 to n-1 do write(matrix1[i,j]:4); writeln; end; end.
Объяснение:
Алгоритм решения данной задачи можно описать так:
За у пользователя количество шагов сдвига и направление. Условиться, что если вводится отрицательное целое, то сдвиг выполняется влево на указанное абсолютное значение, если вводится положительное число, то сдвиг вправо.
Заполнить исходный массив и вывести его на экран.
Выполнять внешний цикл столько раз, сколько шагов было указано.
Если было введено отрицательное число, то выполнить цикл от первого элемента до предпоследнего, перезаписав в нем значение каждой очередной ячейки на значение последующей. Записать в последнюю ячейку 0.
Иначе, выполнить цикл от последнего элемента до второго, записывая в каждую текущую ячейку значение предыдущей. В первую ячейку записать 0.
Вывести на экран текущий массив.
Сдвиг Влево
-4
111 222 333 444 555 666 777 888 999
222 333 444 555 666 777 888 999 0
333 444 555 666 777 888 999 0 0
444 555 666 777 888 999 0 0 0
555 666 777 888 999 0 0 0 0
Сдвиг в Право
5
111 222 333 444 555 666 777 888 999
0 111 222 333 444 555 666 777 888
0 0 111 222 333 444 555 666 777
0 0 0 111 222 333 444 555 666
0 0 0 0 111 222 333 444 555
0 0 0 0 0 111 222 333 444
begin
write('Введи размерность матрицы:');
readln(n);
matrix1:=new real[n,n];
for var i:=0 to n-1 do begin
for var j:=0 to n-1 do
begin
matrix1[i,j]:=Random(100);
write(matrix1[i,j]:4);
end;
writeln;
end;
writeln('Поменяли:');
for var j:=0 to n-1 do
begin
tmp:=matrix1[j,n-1];
matrix1[j,n-1]:=matrix1[n-1,j];
matrix1[n-1,j]:=tmp;
end;
for var i:=0 to n-1 do begin
for var j:=0 to n-1 do
write(matrix1[i,j]:4);
writeln;
end;
end.