Вычислить сумму ряда
5
s = ∑ (-1) * i * (x / i!)
i=1
Значение x вводится с клавиатуры.
В данном случае надо найти сумму ряда произведений:
s = (-1) * 1 * (x / 1!) + (-1) * 2 * (x / 2!) + (-1) * 3 * (3 / i!) + (-1) * 4 * (x / 4!) + (-1) * 5 * (x / 5!)
Так как i меняется от 1 до 5, то каждый элемент ряда можно находить в цикле, после этого добавлять к сумме.
Поскольку элемент ряда содержит факториал, то его придется вычислять отдельно для каждого значения i. Это вычисление можно вынести в отдельную функцию.
Таким образом, алгоритм решения задачи сводится к следующему:
- Ввести значение x.
- Присвоить s 0.
- В цикле для i от 1 до 5
- получать факториал i,
- вычислять значение выражения (-1) * i * (x / i!),
- суммировать полученное значение со значением s.
- Вывести значение s на экран.
Факториал также вычисляется в цикле. Сначала в переменную записывается 1, затем значение этой переменной в цикле умножается на числа от 2 до i. (В программе ниже — до n, т.к. i используется как счетчик.)
Pascal
var
s: real;
x: integer;
i: byte;
j: longint;
function factorial(n: byte): longint;
var i: byte;
begin
factorial := 1;
for i:=2 to n do
factorial := factorial * i;
end;
begin
readln(x);
s := 0;
for i:=1 to 5 do begin
j := factorial(i);
s := s + ((-1) * i) * (x / j);
end;
writeln(s:5:3);
end.
-3
8.125
Язык Си
#include < stdio.h>
int factorial(short n);
main() {
float s, x;
short i;
int j;
scanf("%f", &x);
s = 0;
for (i=1; i <= 5; i++) {
j = factorial(i);
s += (-1 * i) * (x / j);
}
printf("%.3f\n", s);
}
int factorial(short n) {
short i;
int f;
f = 1;
for (i=2; i<=n; i++)
f *= i;
return f;
}
10
-27.083
Python
def factorial(n):
f = 1
for i in range(2,n+1):
f *= i
return f
x = int(input())
s = 0
for i in range(1,6):
j = factorial(i)
s += (-1 * i) * (x / j)
print("%.3f" % s)
2
-5.417
КуМир
алг
нач
вещ s, x
цел i, j
ввод x
s := 0
нц для i от 1 до 5
j := факториал(i)
s := s + ((-1) * i) * (x / j)
кц
вывод s:5:3
кон
алг цел факториал(цел a)
нач
цел i
знач := 1
нц для i от 2 до a
знач := знач * i
кц
кон
-0.5
1.354
Basic-256
input x
s = 0
for i=1 to 5
gosub factorial
s = s + (-1 * i) * (x / j)
next i
decimal 3
print s
end
factorial:
j = 1
for n=1 to i
j = j * n
next n
return
-2
5.417