Написать программу Python Напишите программу, которая выводит строку матрицы, сумма элементов которой наибольшая, и столбец с наибольшей суммой Предусмотреть вывод сообщения при отрицательном результате решения.
Задача, аналогичная той, которую публиковали вчера. Только цикл repeat заменяем на while.
Сначала немного математики. О модуле тут смысла нет говорить, поскольку все an - суть положительные величины на интервале (0;1).
uses Crt;
function ai(n:integer):real; var i:integer; p:real; begin p:=1; for i:=n+1 to 2*n do p:=p*i; ai:=1/p end;
var i:integer; eps,s,an:real; begin ClrScr; Write('eps='); Read(eps); s:=0; i:=1; an:=eps+1; while an>=eps do begin an:=ai(i); if an>=eps then begin s:=s+an; Inc(i) end end; Writeln('s=',s); ReadKey end.
Тестовые решения: eps=0.07 s= 5.8333333333E-01
eps=0.000001 s= 5.9229647667E-01
eps=1e-8 s= 5.9229653448E-01
Для контроля результата можно отметить, что сумма первых 1000 членов ряда равна приблизительно 5.922965365Е-01
Если раздражает наличие функции, можно и без нее: uses Crt;
var i,j:integer; eps,s,an,p:real; begin ClrScr; Write('eps='); Read(eps); s:=0; i:=1; an:=eps+1; while an>=eps do begin p:=1; for j:=i+1 to 2*i do p:=p*j; an:=1/p; if an>=eps then begin s:=s+an; Inc(i) end end; Writeln('s=',s); ReadKey end.
// PascalABC.NET 3.3, сборка 1627 от 27.01.2018 // Внимание! Если программа не работает, обновите версию!
begin var n:=ReadInteger('Количество строк (столбцов) в матрице:'); Writeln('*** Исходная матрица ***'); var a:=MatrRandom(n,n,-99,99); a.Println(4); Writeln(4*a.ColCount*'-'); var (su,sd,sl):=(0,0,0); for var i:=0 to n-1 do for var j:=0 to n-1 do if i<j then su+=a[i,j] else if i=j then sd+=a[i,j] else sl+=a[i,j]; Writeln('Суммы элементов:'); Writeln(' - верхней треугольной матрицы ',su); Writeln(' - главной диагонали ',sd); Writeln(' - нижней треугольной матрицы ',sl) end.
Пример Количество строк (столбцов) в матрице: 4 *** Исходная матрица *** -73 -89 4 39 77 -32 23 -45 -29 -70 -88 -40 -83 9 21 -46
Суммы элементов: - верхней треугольной матрицы -108 - главной диагонали -239 - нижней треугольной матрицы -75
"Школьный" вариант
const nn=20; { максимальный размер }
var a:array[1..nn,1..nn] of integer; i,j,n:integer; su,sd,sl:longint;
begin Write('Количество строк (столбцов) в матрице:'); Readln(n); Randomize; Writeln('*** Исходная матрица ***'); su:=0; sd:=0; sl:=0; for i:=1 to n do begin for j:=1 to n do begin a[i,j]:=Random(199)-99; Write(a[i,j]:4); if i<j then su+=a[i,j] else if i=j then sd+=a[i,j] else sl+=a[i,j] end; Writeln end; Writeln('Суммыа элементов:'); Writeln(' - верхней треугольной матрицы ',su); Writeln(' - главной диагонали ',sd); Writeln(' - нижней треугольной матрицы ',sl) end.
Сначала немного математики.
О модуле тут смысла нет говорить, поскольку все an - суть положительные величины на интервале (0;1).
uses Crt;
function ai(n:integer):real;
var
i:integer;
p:real;
begin
p:=1;
for i:=n+1 to 2*n do p:=p*i;
ai:=1/p
end;
var
i:integer;
eps,s,an:real;
begin
ClrScr;
Write('eps='); Read(eps);
s:=0; i:=1; an:=eps+1;
while an>=eps do begin
an:=ai(i);
if an>=eps then begin s:=s+an; Inc(i) end
end;
Writeln('s=',s);
ReadKey
end.
Тестовые решения:
eps=0.07
s= 5.8333333333E-01
eps=0.000001
s= 5.9229647667E-01
eps=1e-8
s= 5.9229653448E-01
Для контроля результата можно отметить, что сумма первых 1000 членов ряда равна приблизительно 5.922965365Е-01
Если раздражает наличие функции, можно и без нее:
uses Crt;
var
i,j:integer;
eps,s,an,p:real;
begin
ClrScr;
Write('eps='); Read(eps);
s:=0; i:=1; an:=eps+1;
while an>=eps do begin
p:=1;
for j:=i+1 to 2*i do p:=p*j;
an:=1/p;
if an>=eps then begin s:=s+an; Inc(i) end
end;
Writeln('s=',s);
ReadKey
end.