Сумма элементов ряда чисел

Задача

Найти сумму n элементов следующего ряда чисел:
1 -0.5 0.25 -0.125 ...
Количество элементов (n) вводится с клавиатуры.

Пояснение к задаче и алгоритм решения

В данном случае ряд чисел состоит из элементов, где каждый следующий меньше предыдущего в два раза по модулю и имеет обратный знак. Значит, чтобы получить следующий элемент, надо предыдущий разделить на -2.

Какой-либо переменной надо присвоить значение первого элемента ряда (в данном случае это 1). Далее в цикле добавлять ее значение к переменной, в которой накапливается сумма, после чего присваивать ей значение следующего элемента ряда, разделив текущее значение на -2. Цикл должен выполняться n раз.

Следует отметить, что чем больше n, тем меньше меняется сумма от прибавления каждого следующего элемента, т.к. на каждой итерации цикла значение элемента уменьшается в два раза (по модулю), т.е. прибавляется все меньшая и меньшая величина. Попробуйте выполнить программу, введя в качестве значения n сначала 3, затем 10 и 20. Вы увидите, что разница между первым и вторым случаем значительна, а между вторым и третьим - нет.

Исходный код на языке программирования Pascal

var
    n,i: byte;
    e,s: real;
begin
    readln(n);
    e := 1;
    s := 0;
    for i:=1 to n do begin
        s := s + e;
        e := e / -2;
    end;
    writeln(s:9:7);
end.

Пример(ы) выполнения программы на языке Pascal

6
0.6562500

Исходный код на языке программирования C

#include <stdio.h>
 
main() {
    unsigned short n,i;
    float e, s;
    scanf("%d",&n);
    e = 1;
    s = 0;
    for (i=0;i<n;i++) {
        s += e;
        e /= -2;
    }
    printf("%.7f\n",s);
}

Пример(ы) выполнения программы на языке C

10
0.6660156

Исходный код на языке программирования Python

n = int(input())
e = 1
s = 0
for i in range(n):
    s += e
    e /= -2
print(s)

Пример(ы) выполнения программы на языке Python

4
0.625

Исходный код на языке программирования КуМир

алг сумма рядя
нач
  цел n,i
  вещ e,s
  ввод n
  e := 1
  s := 0
  нц для i от 1 до n
    s := s + e
    e := e / 2 * (-1)
  кц
  вывод s
кон

Пример(ы) выполнения программы на языке КуМир

4
0.625

30
0.6666667

Исходный код на языке программирования Basic

input n
start = 1
sum = 0
for i=1 to n
        sum = sum + start
        start = start / -2
next i
print sum

Пример(ы) выполнения программы на языке Basic

20
0.666666

Тема

Циклы

Уровень сложности

Средний

Дата публикации