Посчитать сумму элементов в тех строках, которые не содержат отрицательных элементов — Pascal(Паскаль)

uses crt;
const
  space = ' ';
  n = 3;
 
type
  TMatrix = array [1..n, 1..n] of integer;
 
var item, k, res: integer;
    Matr: TMatrix;
 
procedure Input_Matr (var Matr: TMatrix);
var i, j: integer;
 begin
  writeln('Введите матрицу размерности ',n,' на ', n, ': ');
   for i := 1 to n do
     for j := 1 to n do
        read(Matr[i, j]);
   readln;
  writeln(#10,'Ввод завершен.');
 end;
 
procedure Input_Random(var Matr: TMatrix);
var ch: char; i, j: integer;
begin
   write('Подтверждаете автоматический ввод элементов? (Y/N) -> ');
   readln(ch);
   if ch in ['Y','y','Н','н'] then
                               begin
                                randomize;
                                for i := 1 to n do
                                  for j := 1 to n do
                                   Matr[i, j] := random(21)-20;
                                end;
  writeln(#10,'Ввод успешно завершен', #10);
 end;
 
procedure Print_Matr(Matr: TMatrix);
var i, j: integer;
 begin
  writeln;
  for i := 1 to n do
    for j := 1 to n do
      begin
        write(Matr[i, j], space);
        if j = n then writeln;
      end;
 end;
 
 
function No_Negatives(Matr: TMatrix; k: integer): boolean;
var i: integer; OK: boolean;
 begin
   i := k; OK := true;
    while (i <= n) and OK do
     if Matr[k, i] < 0 then OK := false
                       else inc(i);
   No_Negatives := OK
 end;
 
 
function Sum_El(Matr: TMatrix; k: integer): integer;
var i,result: integer;
 begin
  result := 0;
  if No_Negatives(Matr,k) then
                           begin
                            for i := k to n do
                             result := result + Matr[k,i]
                           end
                          else result := 0;
  Sum_El := result
 end;
 
 
function Menu: byte;
const
  MaxItem = 5;
  var result:integer;
begin
  writeln(#10,'Выберите какой-либо пункт меню:');
  writeln(#10,'1 - Ввести новую матрицу;');
  writeln('2 - Заполнить матрицу случайными числами;');
  writeln('3 - Просмотреть текущую матрицу;');
  writeln('4 - Сумма элементов в строках, не содерж. отрицательных элементов;');
  writeln('5 - Минимум среди сумм элементов диагоналей,');
  writeln('    параллельных главной диагонали;');
  writeln('0 - Выход;');
  write(#10,'Ваш выбор: -> ');
 
  repeat
    readln(result);
  until result in [0..MaxItem];
 
  menu := result
 
end;
 
 
begin{main}
 repeat
    item := menu;
    case item of
     1: Input_Matr(Matr);
     2: Input_Random(Matr);
     3: Print_Matr(Matr);
     4: begin
         for k := 1 to n do
          begin
           res := Sum_El(Matr, k);
           if res <> 0 then writeln(#10,'Строка - ',k,', сумма элементов в ней = ',res);
          end;
 
        end;
    end;
 
 
until item = 0;
end.

Leave a Comment

61 − = 52