Дана матрица A(N, N). Если хотя бы один элемент строки матрицы отрицателен, то все элементы этой строки заменить нулями — 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.

Leave a Comment

+ 80 = 87