// PascalABC.NET 3.3, сборка 1583 от 25.11.2017 // Внимание! Если программа не работает, обновите версию!
begin Writeln('*** Исходный массив ***'); var a:=MatrRandom(4,4,-99,99); a.Println(4); Writeln(4*a.ColCount*'-'); var sn:=a.ElementsByRow.Where(t->t<0).Sum; Writeln('Сумма отрицательных элементов равна ',sn); var sd:=0; for var i:=0 to a.RowCount-1 do sd+=a[i,i]; Writeln('Сумма элементов на главной диагонали равна ',sd); end.
Сумма отрицательных элементов равна -217 Сумма элементов на главной диагонали равна 73
Evagg3856
30.05.2023
Чтобы излишне не терять точность и не тратить лишнее время на вычисления, выведем рекуррентную формулу.
В задании не сказано точно, как определять условие окончания суммирования. Примем, что суммирование завершается, если очередной член ряда не может изменить накопленную сумму больше, чем на ε, т.е. |aₓ| ≤ ε.
// PascalABC.NET 3.3, сборка 1583 от 25.11.2017 // Внимание! Если программа не работает, обновите версию!
begin var (ai1,eps,s,i):=(3/2,0.001,3/2,2); while true do begin var a:=3/(4*i-2)*ai1; if Abs(a)>eps then begin i+=1; s+=a; ai1:=a end else Break end; Writeln('S = ',s:0:3) end.
Результат S = 2.532
Ответить на вопрос
Поделитесь своими знаниями, ответьте на вопрос:
Дан фрагмент линейного алгоритма X:=2 Y:=X*X и тд со всеми задача От за всё
// Внимание! Если программа не работает, обновите версию!
begin
Writeln('*** Исходный массив ***');
var a:=MatrRandom(4,4,-99,99);
a.Println(4); Writeln(4*a.ColCount*'-');
var sn:=a.ElementsByRow.Where(t->t<0).Sum;
Writeln('Сумма отрицательных элементов равна ',sn);
var sd:=0;
for var i:=0 to a.RowCount-1 do sd+=a[i,i];
Writeln('Сумма элементов на главной диагонали равна ',sd);
end.
Пример
*** Исходный массив ***
55 -36 70 19
79 14 5 -5
79 -9 -62 20
-71 69 -34 66
Сумма отрицательных элементов равна -217
Сумма элементов на главной диагонали равна 73