[ домой ] [ следующий ] [ начало главы ] [ предыдущий ] [ содержание ]

Пример 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
 

[ домой ] [ следующий ] [ начало главы ] [ предыдущий ] [ содержание ]