Обозначение проверяемого условия:
(j<=N) и (Flag = "Нет")=> (1)
| i
| Flag
| j
| (1)
| A[i,j]<0
| Flag="Да"
| A[i,j]
|
|
| "Нет" "Да"
| 1 2 1 2 3
| + + -(кц)
| - +
| +
| A[1,1]=0 A[1,2]=0 A[1,3]=0
|
|
| "Нет"
| 1 2 3 4
| + + + -(кц)
| - - -
| -
| |
|
| "Нет" "Да"
| 1 1 2 3
| + -(кц)
| +
| +
| A[3,1]=0 A[3,2]=0 A[3,3]=0
|
Turbo Pascal
Program Modify;
Uses Crt;
Var A : Array[1..10, 1..10] of Real;
N, i, j : Integer;
{-------------------------------------}
Procedure InputOutput; {описание процедуры ввода-вывода матрицы}
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; ClrScr;
WriteLn(’ Исходная матрица :’); WriteLn;
For i := 1 to N do
Begin
For j := 1 to N do Write(A[i, j] : 5 : 1);
WriteLn
End; WriteLn
End; { of InputOutput }
{-------------------------------------------}
Procedure Line(Var i : Integer); {описание процедуры обработки}
Var Flag : Boolean; {строки матрицы }
Begin
j := 1; Flag := FALSE;
While (j<=N) and not Flag do {цикл до первого отрицательного}
If A[i, j]<0 then Flag:=TRUE else j:=j+1; {элемента строки}
If Flag then {обнуление строки, содержашей}
For j := 1 to N do A[i, j] := 0 {отрицательные элементы }
End;
{-------------------------------------------}
Procedure OutRes; {описание процедуры вывода матрицы-результата}
Begin
WriteLn(’ Матрица-результат :’); WriteLn;
For i := 1 to N do
Begin
For j := 1 to N do Write(A[i, j]:5:1);
WriteLn
End; ReadLn
End; { of OutRes }
{-------------------------------------------}
BEGIN
InputOutput; {вызов процедуры ввода-вывода матрицы}
For i := 1 to N do Line(i);{циклический вызов процедуры обработки строк}
OutRes; {вызов процедуры вывода матрицы-результата}
END.
QBasic
CLS : INPUT "Количество строк и столбцов - ", N