Дана целочисленная матрица A(N, M). Определить, встречается ли заданное целое K среди максимальных элементов столбцов этой матрицы — Pascal(Паскаль)

{      Пример 6.2. Дана  целочисленная  матрица  А(N,M).  Определить,
                   встречается ли заданное целое К среди максимальных
                   элементов столбцов этой матрицы.


                                 Система тестов
       ╔═══════╤═════════════╤════════════════════════╤═══════════════╗
       ║ Номер │ Проверяемый │         Данные         │               ║
       ║ теста │   случай    ├───┬───┬───┬────────────┤   Результат   ║
       ║       │             │ К │ N │ M │  Матрица А │               ║
       ╟───────┼─────────────┼───┼───┼───┼────────────┼───────────────╢
       ║       │             │   │   │   │  1  5  8   │               ║
       ║   1   │ Встречается │ 5 │ 3 │ 3 │  4  2  0   │ "Встречается" ║
       ║       │             │   │   │   │  1  2  3   │               ║
       ╟───────┼─────────────┼───┼───┼───┼────────────┼───────────────╢
       ║   2   │      Не     │ 1 │ 2 │ 2 │   2  1     │      "Не      ║
       ║       │ встречается │   │   │   │   1  2     │  встречается" ║
       ╚═══════╧═════════════╧═══╧═══╧═══╧════════════╧═══════════════╝
}
  Program Checking;
    Uses Crt;
    Var A          : Array[1..10, 1..10] of Integer;
        N, M, i, j : Integer;
        K          : Integer;  { заданное число               }
        JMax       : Integer;  { максимальный элемент столбца }
        Flag       : Boolean;
  {---------------------------------------------------}
  Procedure InputOutput; { описание процедуры ввода-вывода }
  Begin
    ClrScr;
    Write('Введите целое K = ');  ReadLn(K);  WriteLn;

    WriteLn('Введите целочисленную матрицу А');
    Write('Количество строк - '); ReadLn(N);
    Write('Количество столбцов - '); ReadLn(M);
    For i := 1 to N do
      For j := 1 to M do
        begin Write('A[' , i , ', ' , j , '] = ');
              ReadLn(A[i, j])
        end; ClrScr;

    WriteLn('Исходная матрица :'); WriteLn;
    For i := 1 to N do
      begin
         For j := 1 to M do Write(A[i,j]:4);
         WriteLn
      end; WriteLn;
  End; { of InputOutput }
  {--------------------------------------------}
  Procedure YesOrNot(Var Flag:Boolean); { описание процедуры }
   Begin                                { решения задачи     }
     Flag:=FALSE; j:=1;
     While (j<=M) and not Flag do    { цикл по столбцам с прерыванием }
       begin JMax:=A[1, j];
             For i := 2 to N do      { цикл нахождения JMax }
                If A[i, j]>JMax then JMax:=A[i, j];

             If K=JMax then Flag:=TRUE else j:=j+1 { условие прерывания }
       end;
   End;
  {--------------------------------------------}
  BEGIN
    InputOutput;    { вызов процедуры ввода-вывода исходных данных }
    YesOrNot(Flag); { вызов процедуры решения задачи }

    Write('О т в е т : число ', K );
    If Flag then Write(' встречается')
            else Write(' не встречается');
    WriteLn(' среди максимальных элементов столбцов матрицы');
    ReadLn
  END.

Leave a Comment

82 − = 79