Определить номер столбца с максимальной суммой и строки с минимальным произведением элементов - 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.
Объяснение кода листинга программы
- Создание переменной
a
типаarray[1..n,1..n] of real;
и заполнение её случайными числами от -9.99 до 9.99. - Вычисление максимальной суммы и номера столбца с помощью цикла
for
. - Вычисление минимального произведения и номера строки с помощью цикла
for
. - Сортировка массива
a
по модулю с помощью двух вложенных цикловfor
. - Вывод содержимого массива
a
после сортировки. - Чтение пользовательского ввода с помощью функции
readln
. - Остановка программы с помощью оператора
readln
.
ИИ поможет Вам:
- решить любую задачу по программированию
- объяснить код
- расставить комментарии в коде
- и т.д