Упростить программу для вычисления суммы - 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);
}

Объяснение кода листинга программы

  1. В функции absf проверяется, является ли число отрицательным. Если это так, то оно умножается на -1.0f.
  2. В функции main считывается число с помощью scanf.
  3. Проверяется, является ли число отрицательным или больше 1. Если это так, то программа завершается.
  4. Инициализируется переменная sum равной 0.0f.
  5. Инициализируется переменная a равной 1.0f.
  6. Инициализируется переменная i равной 1.
  7. В цикле do-while происходит следующее:
    • К переменной sum прибавляется значение переменной a.
    • Значение переменной i увеличивается на 1.
    • Внутри цикла внутри if проверяется, является ли i нечетным числом.
    • Если это так, то значение переменной k устанавливается равным -1.0f.
    • Значение переменной a обновляется как k/(i*i).
  8. Цикл выполняется до тех пор, пока абсолютное значение a не станет меньше e.
  9. Выводится значение переменной sum.

ИИ поможет Вам:


  • решить любую задачу по программированию
  • объяснить код
  • расставить комментарии в коде
  • и т.д
Попробуйте бесплатно

Оцени полезность:

7   голосов , оценка 4 из 5
Похожие ответы