Упростить программу для вычисления суммы - 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
.
ИИ поможет Вам:
- решить любую задачу по программированию
- объяснить код
- расставить комментарии в коде
- и т.д