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