Определить номер столбца с максимальной суммой и строки с минимальным произведением элементов - Pascal

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

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

Здравствуйте! Прошу помочь с задачкой...Начало положено, но что-то выводит совсем не то, что хотелось бы... Исходное условие:Дана двумерная матрица А вещественных чисел. 1. Определить номер столбца, в котором сумма элементов матрицы максимальна и номер строки, в которой произведение элементов минимальна. 2. Упорядочить элементы второго столбца по возрастанию абсолютных значений элементов. На первом пункте уже застопорилась...Если хотя бы эту часть подправить, дальше доделаю Спасибо!
Program Use;
const n=10;
var
  a:array[1..n,1..n] of integer;
  stosum:array[1..n] of integer;//массив для хранения сумм столбцов
  i,j,nomer,sum : integer;
begin
  Randomize;
  for i:=1 to n do
    for j:=1 to n do
      a[i,j]:= Random(10); //заполняем массив
  writeln('*** alphaues is thinking... ***');
  for j:=1 to n do
    begin 
      sum:=0;  
      for i:=1 to n do
        sum:=sum+a[i,j]; // находим сумму столбца
      stosum[j]:=sum;
    end;
  nomer:=1;
  sum:=stosum[1];
  for j:=1 to n do
    begin
      if sum<stosum[j] then sum:=stosum[j];
      nomer:=j;
    end;
  writeln;
  for i:=1 to n do
    begin 
      for j:=1 to n do
        write(a[i,j]:5);//выводим массив
      writeln;
    end;
    writeln('*** столбец с максимальной суммой - ',nomer,'-й');
end.

Решение задачи: «Определить номер столбца с максимальной суммой и строки с минимальным произведением элементов»

textual
Листинг программы
const
  n=10;
var
  a:array[1..n,1..n] of real;
  i,j,maxcol,minrow:integer;
  sum,maxsum,dob,mindob,tmp:double;
begin
  Randomize;
  for i:=1 to n do
    begin
      for j:=1 to n do
        begin
          a[i,j]:=Random(19)-10+Random(100)/100;//диапазон от -9.99 до 9,99
          write(a[i,j]+#9);
        end;
      writeln;
    end;
//1.1
  maxsum:=0;
  maxcol:=0;
  for i:=1 to n do
    begin
      sum:=0;
      for j:=1 to n do
        sum:=sum+a[j,i];
      if sum>maxsum then
        begin
          maxcol:=i;
          maxsum:=sum;
        end;
    end;
  writeln('Максимальная сумма:'+maxsum+' в '+maxcol+'колонке');
 
//1.2 
  mindob:=0;
  minrow:=0;
  for i:=1 to n do
    begin
      dob:=1;
      for j:=1 to n do
        dob:=dob*a[i,j];
      if dob<mindob then
        begin
          minrow:=i;
          mindob:=dob;
        end;
    end;
  writeln('Минимальное произведение елементов по строкам:'+mindob+' в '+minrow+'строке');
 
//сортируем по модулю
  for i := 2 to n do
    for j:=n downto i do
      if abs(a[j-1,2]) > abs(a[j,2]) then
        begin
          tmp:=a[j-1,2];
          a[j-1,2]:=a[j,2];
          a[j,2]:=tmp;
        end;
//вывод второй после сортировки        
  for i:=1 to n do
    begin
      for j:=1 to n do
        write(a[i,j]+#9);
      writeln;
    end;
  readln;
end.

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

  1. Создание переменной a типа array[1..n,1..n] of real; и заполнение её случайными числами от -9.99 до 9.99.
  2. Вычисление максимальной суммы и номера столбца с помощью цикла for.
  3. Вычисление минимального произведения и номера строки с помощью цикла for.
  4. Сортировка массива a по модулю с помощью двух вложенных циклов for.
  5. Вывод содержимого массива a после сортировки.
  6. Чтение пользовательского ввода с помощью функции readln.
  7. Остановка программы с помощью оператора readln.

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


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

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

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