Вставить столбец из нулей после каждого из столбцов, содержащих максимальный элемент - Pascal
Формулировка задачи:
Дан двумерный массив размером n*m, заполненный случайным образом.
2. Вставить после всех столбцов, содержащий максимальный элемент столбцов из нулей.
Решение задачи: «Вставить столбец из нулей после каждого из столбцов, содержащих максимальный элемент»
textual
Листинг программы
const nmax=10;
var a:array[1..nmax,1..2*nmax] of integer;
m,n,i,j,k,max:integer;
begin
randomize;
repeat
writeln('Введите размеры матрицы от 1 до ',nmax);
readln(m,n);
until(m in [1..nmax])and(n in [1..nmax]);
writeln('Исходная матрица');
for i:=1 to m do
begin
for j:=1 to n do
begin
a[i,j]:=1+random(9);
write(a[i,j]:2);
if(i=1)and(j=1) then max:=a[i,j]
else if a[i,j]>max then max:=a[i,j];
end;
writeln;
end;
writeln('Максимальный элемент=',max);
j:=1;
while j<=n do //проверякм все столбцы
begin
k:=0;
i:=1;
while (i<=m)and(k=0) do//ищем в них максимаотный
if a[i,j]=max then k:=1 //если есть,дальше не ищем
else inc(i);
if k=1 then //нашли
begin
inc(n); //добавляем столбец
if j=n-1 then //если был последний
for i:=1 to m do
a[i,n]:=0 //в новый пишем ноли
else //иначе
begin
for k:=n downto j+2 do//сдвигаем столбцы срава на 1 вправо
for i:=1 to m do
a[i,k]:=a[i,k-1];
for i:=1 to m do //в свобоюдный пишем ноли
a[i,j+1]:=0;
end;
inc(j,2)//перешагиваем
end
else inc(j);//если нет макс, на 1 вперед
end;
writeln('Вставка столбцов из 0 за столбцами с максимальными');
for i:=1 to m do
begin
for j:=1 to n do
write(a[i,j]:2);
writeln;
end;
end.
Объяснение кода листинга программы
- Объявление константы
nmaxсо значением 10 - Объявление переменных
a,m,n,i,j,k,maxтипа integer - Начало выполнения программы
- Генерация случайных чисел
- Повторять пока не будут введены размеры матрицы от 1 до
nmax(цикл repeat-until) -- Ввод и сохранение значенийmиn - Вывод
Исходная матрица - Заполнение матрицы
aслучайными числами от 1 до 9 и вывод их на экран - Поиск максимального значения в матрице
max - Вывод
Максимальный элемент - Установка значения
jв 1 - Проверка всех столбцов в матрице -- Поиск в каждом столбце максимального элемента -- Если найден, добавление нового столбца из нулей после каждого столбца с максимальным элементом -- Сдвиг столбцов справа на 1 вправо
- Вывод
Вставка столбцов из 0 за столбцами с максимальными- Вывод измененной матрицы на экран
- Конец выполнения программы