Неверные результаты при вычислениях - C (СИ)
Формулировка задачи:
#include <stdio.h> #include <stdlib.h> #include<stdbool.h> #include<math.h> #include <locale.h> int main() { setlocale(LC_CTYPE,"Russian"); const int MaxIterac=1000000; double x,eps; printf("Введите х и точность Eps\n"); scanf("%lf%lf",&x, &eps); bool f=true; double sum=x, a=x; double x2=x*x; for(int n=0;fabs(a)<eps;n++) { a*=1/((2*n+2)*(2*n+3)); sum+=a; if(n>MaxIterac) { printf("\n Ряд разошелся!\n"); f=false; break; } } if(f) { printf("(a)=\n",sum); printf("Точное значение=\n"),x; } else printf("Ряд разошелся"); getchar(); return 0; }
Решение задачи: «Неверные результаты при вычислениях»
textual
Листинг программы
#include <stdio.h> #include <stdlib.h> #include<stdbool.h> #include<math.h> #include <locale.h> int main() { setlocale(LC_CTYPE,"Russian"); const int MaxIterac=1000000; double x,eps; printf("Введите х и точность Eps (x должен быть меньше 1 по условию)\n"); scanf("%lf%lf",&x, &eps); bool f=true; double sum, a;//здесь было все =х это надо было стереть double x2=x*x; for(double n=0;fabs(a)<eps;n++) { a*=-(x2*(2*n+1)/(2*n+3)); sum+=a; if(n>MaxIterac) { printf("\n Ряд разошелся!\n"); f=false; break; } } if(f) { printf("arctg(x)=%le\n",sum);//тут добавить%с оператором printf("Точное значение=%g\n"),atan(x);и тут } else printf("Ряд разошелся"); getchar(); return 0; }
Объяснение кода листинга программы
- Включаем необходимые заголовочные файлы для работы с математическими функциями и вводом/выводом данных.
- Устанавливаем локальную настройку на русский язык.
- Определяем максимальное количество итераций для вычисления ряда.
- Вводим значение переменной
x
и точностьeps
с помощью функцииscanf()
. - Инициализируем переменную
f
в качестве флага для проверки ряда на сходимость. - Объявляем переменные
sum
иa
для хранения суммы ряда и текущего члена ряда соответственно. - Вычисляем квадрат
x
и инициализируем переменнуюn
для цикла. - Запускаем цикл, который продолжает выполняться, пока абсолютное значение
a
меньше заданной точностиeps
. - Внутри цикла обновляем значение
a
с помощью формулы ряда. - Добавляем обновленное значение
a
к сумме рядаsum
. - Проверяем, превышает ли значение
n
максимальное количество итераций. Если да, то выводим сообщение о том, что ряд разошелся, устанавливаем флагf
в значениеfalse
и прерываем цикл с помощью оператораbreak
. - После завершения цикла проверяем значение флага
f
. Если оно равноtrue
, то выводим значение суммы рядаsum
с помощью функцииprintf()
. В противном случае выводим сообщение о том, что ряд разошелся. - Добавляем в код оператор
getchar()
, чтобы программа не закрылась сразу после вывода результатов. - Возвращаем
0
для успешного завершения программы.
ИИ поможет Вам:
- решить любую задачу по программированию
- объяснить код
- расставить комментарии в коде
- и т.д