Вычисление суммы знакопеременного ряда - C (СИ)
Формулировка задачи:
Добрый день!
Есть последовательность такого типа: 1-1/2+1/3-1/4+1/5...
Как получить итоговое значение заданной последовательности?
Предел вводится пользователем.
Решение задачи: «Вычисление суммы знакопеременного ряда»
textual
Листинг программы
#include <stdio.h>
int main()
{
int i, limit;
float total;
total = 0.0F;
printf("Enter limit(integer value >= 0): ");
while(scanf("%d", &limit) != 1 || limit < 0)
{
printf("The limit has to be integer >= 0: ");
while(getchar()!= '\n');
}
for(i = 1; i <= limit; ++i)
{
if(i%2)
total += 1.0F/i;
else
total -= 1.0F/i;
}
printf("For limit == %d, total == %.4f\n", limit, total);
getchar();
return 0;
}
Объяснение кода листинга программы
В этом коде выполняется вычисление суммы знакопеременного ряда. Вот список действий, которые выполняются в коде:
- Объявляются переменные:
i- для хранения индекса текущего элемента рядаlimit- для хранения ограничения на количество элементов рядаtotal- для хранения суммы ряда
- Инициализируется переменная
totalзначением 0.0F. - Выводится сообщение с просьбой ввести ограничение на количество элементов ряда.
- Пока пользователь вводит некорректное значение для
limit(не целое число или меньше 0), выводится сообщение об ошибке и считывается следующее введенное значение. - Если пользователь вводит корректное значение для
limit, начинается цикл, который выполняет вычисления для каждого элемента ряда. - В каждой итерации цикла проверяется, является ли текущий элемент четным числом.
- Если текущий элемент нечетный, к сумме
totalдобавляется дробь 1/i. - Если текущий элемент четный, к сумме
totalвычитается дробь 1/i. - После завершения цикла выводится сообщение с результатом вычислений.
- Программа ожидает нажатия любой клавиши, чтобы пользователь мог увидеть результат.
- Программа завершается.