Обозначения проверяемых условий:
(i <= N) и (Flag = "Нет") => (1)
(j < i) и (Flag = "Нет") => (2)
| N теста
| i
| Flag
| (1)
| j
| (2)
| A[i]=A[j]
| Otvet
|
|
|
| "Нет"
| +
|
| +
-(кц)
| -
| |
|
| "Да"
| +
|
| +
+
-(кц)
| -
+
| |
|
| | -(кц)
| | | | "Есть отрицательные"
|
|
|
| "Нет"
| +
|
| +
-(кц)
| -
| |
|
| | +
|
| +
+
-(кц)
| -
-
| |
|
| | -(кц)
| | | | "Нет отрицательных"
|
Turbo Pascal
Program UnderDiagonal;
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('Количество строк и столбцов - '); ReadLn(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); {описание процедуры поиска решения}
Begin
i := 2 ; Flag := FALSE;
While (i<=N) and not Flag do
Begin
j:=1;
While (j<i) and not Flag do
If (A[i, j]<0)
then Flag:=TRUE
else j:=j+1;
i:=i+1
end;
End; { of Solution }
{--------------------------------------------}
Procedure OutResult;
Begin
WriteLn('О т в е т :');
Write('Среди элементов, лежащих ниже главной диагонали, ');
If Flag then WriteLn('есть отрицательные.')
else WriteLn('нет отрицательных.');
ReadLn
End; { of OutResult }
{--------------------------------------------}
BEGIN
InputOutput(A); {вызов процедуры ввода-вывода данных }
Solution(A); {вызов процедуры поиска решения задачи}
OutResult {вызов процедуры вывода результата }
END.
QBasic
CLS : INPUT "Количество строк и столбцов матрицы = ", N