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