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

 
Система тестов

Номер теста Проверяемый случай Данные Результат
N Матрица А Текст
1 Имеется 3 "Есть такие"
2 Не имеется 2 "Нет таких"

Демонстрация


Школьный АЯ
алг Диагональ (арг цел N, арг цел таб А[1:N, 1:N], рез лит Teкст)
нач цел i, лит Flag
  i:=1; Flag:="Нет"
  нц пока (i<=N) и (Flag="Нет")   | условие продолжения цикла
    если (A[i, i]>0) и (mod(A[i, i], 2)=1) | условие завершения цикла
      то Flag := "Да"
      иначе i:=i+1
    все
  кц 
  если Flag = "Да"
    то Текст := "Есть такие"
    иначе Текст := "Нет таких"
  все
кон

Исполнение алгоритма 

Обозначения проверяемых условий: 
(i <= N) и (Flag = "Нет") 
=> (1) 
(A[i, i] > 0) и (mod(A[i, i], 2) = 1)
  => (2) 

N теста i Flag (1) (2) Текст
1 1
2
"Нет"
"Да"
+
+
-(кц)
-
+
"Есть такие"
2 1
2
3
"Нет" +
+
-(кц)
-
-
"Нет таких"

 

  Блок-схема (фрагмент) 


Turbo Pascal
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;     { of Solution }
{------------------------------------}
BEGIN
  InputOutput(A); {вызов процедуры ввода-вывода данных}
  Solution(A);    {вызов процедуры поиска решения задачи}
END. QBasic
CLS 
INPUT "Количество строк и столбцов матрицы = ", N
DIM A(N, N)
FOR i = 1 TO N
  FOR j = 1 TO N
    PRINT "A(" ; i ; ", " ; j ; ") = ";
    INPUT A(i, j)
  NEXT j
EXT i
 
PRINT : PRINT "Матрица А"
FOR i = 1 TO N
  FOR j = 1 TO N
    PRINT A(i, j) ;
  NEXT j : PRINT
NEXT i
 
'Цикл "пока" по элементам главной диагонали A(i,i)
i = 1 : Flag = 0
WHILE
i <= N AND Flag = 0
  IF A(i, i)>0 AND A(i, i) MOD 2=1 THEN Flag=1 ELSE i=i+1
WEND
 
PRINT :  PRINT "О т в е т :"
PRINT "Среди элементов главной диагонали ";
IF
Flag = 1 THEN
    PRINT "есть положительные нечетные."
  ELSE
    PRINT "нет положительных нечетных."
END IF
END

Другие записи

10.06.2016. Пример 4.5. Включить заданное число D в массив A(N), упорядоченный по возрастанию, с сохранением упорядоченности.
Система тестов Номер теста Проверяемый случай Данные Результат D Массив А 1 D <= a1 0 A=(1, 3, 5) A=(0, 1, 3, 5) 2 a1< D <= aN 4 A=(1, 3, 5) A=(1, 3, 4, 5) 3 aN…