Определить номер столбца с максимальной суммой и строки с минимальным произведением элементов - 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
.
ИИ поможет Вам:
- решить любую задачу по программированию
- объяснить код
- расставить комментарии в коде
- и т.д