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

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

                               Система тестов
          ╔═══════╤═════════════╤═══════════════════╤══════════════╗
          ║ Номер │ Проверяемый │      Данные       │              ║
          ║ теста │   случай    ├─────┬─────────────┤   Результат  ║
          ║       │             │  N  │  Матрица А  │              ║
          ║───────┼─────────────┼─────┼─────────────┼──────────────╢
          ║       │             │     │  2  2  2    │              ║
          ║   1   │   Имеется   │  3  │  2  3  2    │ "Есть такие" ║
          ║       │             │     │  2  2  5    │              ║
          ╟───────┼─────────────┼─────┼─────────────┼──────────────╢
          ║   2   │ Не имеется  │  2  │   2  1      │ "Нет таких"  ║
          ║       │             │     │   1  2      │              ║
          ╚═══════╧═════════════╧═════╧═════════════╧══════════════╝
}
  Program Diagonal;
    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('Количество строк и столбцов - '); Read(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); {описание процедуры поиска решения}
    Var Flag : Boolean;
   Begin
     Flag:=FALSE; i:=1;
     While (i<=N) and not Flag do
       If (A[i, i]>0) and (A[i, i] mod 2 = 1)
         then Flag:=TRUE
         else i:=i+1;

     WriteLn('О т в е т :');
     Write('Среди элементов главной диагонали ');
     If Flag then WriteLn('есть нечетные положительные.')
             else WriteLn('нет нечетных положительных.');
     ReadLn;
   End;
 {---------------------------------------}
  BEGIN
    InputOutput(A); { вызов процедуры ввода-вывода данных   }
    Solution(A);    { вызов процедуры поиска решения задачи }
  END.

Leave a Comment

50 − 40 =