Дана целочисленная матрица A(N, N). Определить, имеются ли среди её элементов, лежащих ниже главной диагонали, отрицательные числа — Pascal(Паскаль)

{       Пример 5.2. Дана целочисленная матрица A(N,N). Определить,
                    имеются ли среди ее элементов,  лежащих  ниже
                    главной диагонали, отрицательные числа.

                               Система тестов
       ╔═══════╤═════════════╤══════════════════╤═════════════════════╗
       ║ Номер │ Проверяемый │      Данные      │                     ║
       ║ теста │   случай    ├────┬─────────────┤     Результат       ║
       ║       │             │  N │   Массив А  │                     ║
       ╟───────┼─────────────┼────┼─────────────┼─────────────────────╢
       ║       │             │    │  1 -1  2  1 │                     ║
       ║   1   │  "Имеются"  │  4 │  2  3  1  0 │ "Есть отрицательные ║
       ║       │             │    │  1 -1  2 -1 │        числа"       ║
       ║       │             │    │ -2  1  0  1 │                     ║
       ╟───────┼─────────────┼────┼─────────────┼─────────────────────╢
       ║       │             │    │  1 -1  2    │                     ║
       ║   2   │ "Не имеются"│ 3  │  1  0  1    │ "Нет отрицательных  ║
       ║       │             │    │  2  1  1    │         чисел"      ║
       ╚═══════╧═════════════╧════╧═════════════╧═════════════════════╝
}
  Program UnderDiagonal;
    Uses Crt;
    Type Mas = Array [1..10, 1..10] of Integer;
    Var A       : Mas;
        N, i, j : Integer;
        Flag    : Boolean;

  {-----------------------------------}
  Procedure InputOutput(Var A : Mas); { описание процедуры  }
   Begin                              { ввода-вывода данных }
     ClrScr;
     Write('Количество строк и столбцов - '); ReadLn(N);
     For i := 1 to N do
       For j := 1 to N do
         begin Write('A[' , i , ', ' , j , ']= ? ');
               ReadLn(A[i, j])
         end; WriteLn;

     WriteLn('Матрица :');
     For i := 1 to N do
       begin
         For j := 1 to N do Write(A[i, j] : 5);
         WriteLn
       end; WriteLn
   End; { of InputOutput }
  {------------------------------------}
  Procedure Solution(Var A : Mas); { описание процедуры поиска решения }
  Begin
    i := 2 ; Flag := FALSE;
    While (i<=N) and not Flag do
      begin
        j:=1;
        While (j<i) and not Flag do
          If (A[i, j]<0)
            then Flag:=TRUE
            else j:=j+1;
        i:=i+1
      end;
  End; { of Solution }
  {--------------------------------------------}
  Procedure OutResult;
  Begin
    WriteLn('О т в е т :');
    Write('Среди элементов, лежащих ниже главной диагонали, ');
    If Flag then WriteLn('есть отрицательные.')
            else WriteLn('нет отрицательных.');
    ReadLn
  End; { of OutResult }
  {--------------------------------------------}
  BEGIN
    InputOutput(A); { вызов процедуры ввода-вывода данных   }
    Solution(A);    { вызов процедуры поиска решения задачи }
    OutResult       { вызов процедуры вывода результата     }
  END.

Leave a Comment

55 − 45 =