Матрица: среди элементов каждой строки, отличных от заданного В, найти наибольший элемент и его номер - 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.

Объяснение кода листинга программы

  1. Объявлены переменные:
    • nmax - максимальное количество строк и столбцов в матрице (20);
    • A - матрица (array[1..nmax,1..nmax] of integer);
    • i, j, n, m, imax, b - вспомогательные переменные для работы с матрицей и вводом данных.
  2. Пользователю предлагается ввести количество строк и столбцов матрицы (m и n).
  3. С помощью цикла repeat-until происходит запрос на ввод m и n до тех пор, пока они не будут корректными (больше 0 и меньше nmax).
  4. С помощью двух вложенных циклов for происходит заполнение матрицы случайными числами от 1 до 10.
  5. Пользователю предлагается ввести элемент B, относительно которого будет производиться поиск максимального элемента в каждой строке.
  6. С помощью цикла for происходит обход каждой строки матрицы.
    • Переменная imax инициализируется как -1. Она будет использоваться для хранения номера столбца с максимальным элементом в текущей строке.
    • Перебираются все столбцы текущей строки.
    • Если элемент в текущем столбце не равен B и imax равен -1, то imax присваивается номер текущего столбца.
    • Если элемент в текущем столбце не равен B, imax не равен -1 и элемент в текущем столбце больше элемента в столбце с максимальным значением (A[i,imax]), то imax присваивается номер текущего столбца.
    • Если imax не равен -1, то выводится сообщение с номером строки и столбца, на котором найден максимальный элемент.
    • Если в строке не найдено ни одного элемента, отличного от B, то выводится сообщение об этом.

Оцени полезность:

12   голосов , оценка 4.167 из 5
Похожие ответы