Упростить программу для вычисления суммы - C (СИ)
Формулировка задачи:
Помогите пожалуйста упростить программу, принес преподавателю, он сказал что мы такого не проходили, сказал заново делать, заранее огромное спасибо. Задание: Написать программу для вычисления суммы
S=1+(1/2^2)-(1/3^2)+(1/4^2)-...(1/N^2)m...
пока последнее слагаемое не станет по модулю меньше заранее заданного действительного числа Е<1. Вывести на экран значение S.
#include <stdio.h> #include <math.h> #define n 50 int main(){ float s = 1.0; int e = 1; int i; for(i = 2; i < n; i++){ if(i % 2 == 0){ s += pow((float)1/n, 2);} else{ s -= pow((float)1/n, 2);} if(s < e) break; } printf("%f", s); return 0; }
Решение задачи: «Упростить программу для вычисления суммы»
textual
Листинг программы
float absf(float f) { if (f < 0) f *= -1.0f; return f; } int main() { float e; scanf("%f", &e); if (e < 0 || e > 1) return 1; float sum = 0.0f; float a = 1.0f; int i=1; do { sum += a; ++i; float k = 1.0f; if (i%2 == 1) k = -1.0f; a = k/(i*i); } while(absf(a) > e); printf("sum: %f", sum); }
Объяснение кода листинга программы
- В функции
absf
проверяется, является ли число отрицательным. Если это так, то оно умножается на -1.0f. - В функции
main
считывается число с помощьюscanf
. - Проверяется, является ли число отрицательным или больше 1. Если это так, то программа завершается.
- Инициализируется переменная
sum
равной 0.0f. - Инициализируется переменная
a
равной 1.0f. - Инициализируется переменная
i
равной 1. - В цикле
do-while
происходит следующее:- К переменной
sum
прибавляется значение переменнойa
. - Значение переменной
i
увеличивается на 1. - Внутри цикла внутри
if
проверяется, является лиi
нечетным числом. - Если это так, то значение переменной
k
устанавливается равным -1.0f. - Значение переменной
a
обновляется какk/(i*i)
.
- К переменной
- Цикл выполняется до тех пор, пока абсолютное значение
a
не станет меньшеe
. - Выводится значение переменной
sum
.
ИИ поможет Вам:
- решить любую задачу по программированию
- объяснить код
- расставить комментарии в коде
- и т.д