Матрица: среди элементов каждой строки, отличных от заданного В, найти наибольший элемент и его номер - Pascal
Формулировка задачи:
Задана матрица размерности M×N. Среди элементов каждой строки, отличных от заданного В, найти наибольший элемент и его номер. Число В вводится с клавиатуры
Решение задачи: «Матрица: среди элементов каждой строки, отличных от заданного В, найти наибольший элемент и его номер»
textual
Листинг программы
Const nmax=20; Var A:array[1..nmax,1..nmax] of integer; i,j,n,m,imax,b:integer; Begin Repeat write('Введите M: '); readln(m); Until (0<m)and(m<=nmax); Repeat write('Введите N: '); readln(n); Until (0<n)and(n<=nmax); For i:=1 to n do Begin For j:=1 to m do Begin A[i,j]:=random(11); write(A[i,j]:4); End; writeln; End; write('B: ');readln(B); For i:=1 to n do Begin imax:=-1; For j:=1 to m do if (A[i,j]<>B)and(imax=-1) then imax:=j else if (A[i,j]<>B)and(imax<>-1)and(A[i,j]>A[i,imax]) then imax:=j; if imax<>-1 then writeln('Max в ',i,' строке = ',A[i,imax],' находится на позиции ',imax) else writeln('В строке ',i,' нету элементов отличных от ',b); End; readln; End.
Объяснение кода листинга программы
- Объявлены переменные:
- nmax - максимальное количество строк и столбцов в матрице (20);
- A - матрица (array[1..nmax,1..nmax] of integer);
- i, j, n, m, imax, b - вспомогательные переменные для работы с матрицей и вводом данных.
- Пользователю предлагается ввести количество строк и столбцов матрицы (m и n).
- С помощью цикла repeat-until происходит запрос на ввод m и n до тех пор, пока они не будут корректными (больше 0 и меньше nmax).
- С помощью двух вложенных циклов for происходит заполнение матрицы случайными числами от 1 до 10.
- Пользователю предлагается ввести элемент B, относительно которого будет производиться поиск максимального элемента в каждой строке.
- С помощью цикла for происходит обход каждой строки матрицы.
- Переменная imax инициализируется как -1. Она будет использоваться для хранения номера столбца с максимальным элементом в текущей строке.
- Перебираются все столбцы текущей строки.
- Если элемент в текущем столбце не равен B и imax равен -1, то imax присваивается номер текущего столбца.
- Если элемент в текущем столбце не равен B, imax не равен -1 и элемент в текущем столбце больше элемента в столбце с максимальным значением (A[i,imax]), то imax присваивается номер текущего столбца.
- Если imax не равен -1, то выводится сообщение с номером строки и столбца, на котором найден максимальный элемент.
- Если в строке не найдено ни одного элемента, отличного от B, то выводится сообщение об этом.