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