Найти сумму каждого столбца матрицы - Turbo Pascal

Узнай цену своей работы

Формулировка задачи:

Дана квадратная матрица: 1) Найти сумму каждого столбца матрицы и вывести сумму того столбца, у которого она является большей + нужно вывести номер столбца 2) Если в матрице отрицательных элементов больше чем положительных, то изменить все отрицательные элементы на цифру 0, а положительные элементы на цифру 1. 3) Вывести номер столбца, у которого все элементы равны 0, а если такого нету, вывести соответствующее сообщение

Решение задачи: «Найти сумму каждого столбца матрицы»

textual
Листинг программы
type arr=array[1..20]of integer;
 
var
  i, j, n, max, ind,pn: integer;
  b: arr;
  a: array [1..20]of arr;
  zer,nozer:boolean;
  
begin
  writeln('Vvedite kolichestvo strok i stolbcov:');
  readln(n);
  writeln;
  randomize;
  writeln('1) Massiv:');
  for i := 1 to n do
  begin
    for j := 1 to n do
      begin
        a[i, j] :=10-random(21);
        write(a[i, j]:3);
      end;
      writeln;
  end;
  pn:=0;
  for j := 1 to n do
  begin
    b[j] := 0;
    for i := 1 to n do
      begin
        b[j] := b[j] + a[i, j];
        pn:=pn+ord(a[i, j]>0)-ord(a[i, j]<0);
      end;
  end;
 
  max := -(maxint+1);
  for j := 1 to n do
  begin
    writeln('Summa elementov ', j, ' stolbca: ', b[j]:4);
    if b[j] > max then
    begin
      max := b[j];
      ind := j;
    end;
  end;
  writeln('Maksimal"naya summa u stolbca ', ind);writeln;
 
  if pn<0 then//задание 2
    begin
      writeln('2) Massiv:');
      for i := 1 to n do
        begin
          for j := 1 to n do
            begin
             if a[i, j]<>0 then a[i, j]:=ord(a[i, j]>0);
             write(a[i, j]:3);
            end;
        writeln;
        end;
    end
    else writeln('2) otricatelnyh ne bol"she, chem polozhitel"nyh');
 
   nozer:=true;
   for j := 1 to n do   //задание 3
     begin
      zer:=a[1, j]=0;
      for i := 2 to n do
          zer:=zer and (a[i, j]=0);
      if zer then
         begin
           writeln('3) Vse nuli v stolbce ',j);
           nozer:=not zer;
         end;
     end;
   if nozer then writeln('3) Net nulevyh stolbcov');
   readln;
end.

Объяснение кода листинга программы

  1. Создаётся тип данных arr, который представляет собой массив целых чисел размером от 1 до 20.
  2. Создаются переменные i, j, n, max, ind и pn, которые будут использоваться для работы с матрицей.
  3. Создается переменная b, которая будет представлять собой массив, в котором будут храниться суммы элементов каждого столбца.
  4. Создается массив a, который будет представлять собой исходную матрицу.
  5. Вводится количество строк и столбцов матрицы с помощью функции readln().
  6. Используется функция randomize() для генерации случайных чисел.
  7. Заполняется матрица a с помощью цикла for.
  8. Вычисляется максимальная сумма элемента матрицы с помощью цикла for.
  9. Выводится максимальная сумма элемента.
  10. Проверяется условие pn<0, которое означает, что в матрице есть отрицательные числа.
  11. Если условие выполняется, то выводится вторая часть программы, которая также использует цикл for.
  12. Если условие не выполняется, то выводится сообщение 2) otricatelnyh ne bolshe, chem polozhitelnyh.
  13. В задаче 3 используется цикл for для проверки каждого столбца матрицы на наличие нулей.
  14. Если хотя бы в одном столбце есть ноль, то выводится сообщение 3) Vse nuli v stolbce.
  15. Если все столбцы матрицы не содержат нулей, то выводится сообщение 3) Net nulevyh stolbcov.
  16. Программа завершается с помощью функции readln().

ИИ поможет Вам:


  • решить любую задачу по программированию
  • объяснить код
  • расставить комментарии в коде
  • и т.д
Попробуйте бесплатно

Оцени полезность:

5   голосов , оценка 3.6 из 5
Похожие ответы