Вычисление члена последовательности с заданной точностью - C (СИ)
Формулировка задачи:
Последовательность задана формулой нулевого члена: x0=1+t и формулой для вычисления следующего члена через предыдущий: x(n+1)=x(n)-(x(n)^2-a)/x(n).Изначально мы вводим t, a и точность e с клавиатуры. Затем считаем каждый следующий член последовательности, пока разница между последующим и предыдущим не будет равна e.
Если последовательность не сходится, то выходим из цикла по числу итераций. Cобственно мой код:
Если я правильно понял, то при a и t равными 1 мы получаем последовательность 2 0.5 2 0.5 и т.д.
Т.е при задании точности 1.5 должно выводиться "0.5", но выводится "Выход из цикла по числу итераций". Что я делаю не так?
#include <stdio.h> #include <stdlib.h> #include <locale.h> #include <math.h> int main(void) { setlocale(LC_ALL, "Russian"); float x0, x1, e, raz; int t, a, flag, max; t = a = raz = x0 = x1 = e = max = flag = 0; printf("Введите a,t,e: "); scanf_s("%d%d%f", &a, &t, &e);//Вводим коэффициенты и точность printf("Введите максимальное число итераций: "); scanf_s("%d", &max);//Вводим максимальное число итераций цикла x0 = 1 + t;//Вычисляем первый член прогрессии do { x1=x0-(x0*x0 - a)/x0;//Вычисляем следующий член прогрессии raz=abs(x1 - x0);//Вычисляем разницу между текущим и предыдущим членом x0 = x1;//Предыдущий теперь текущий flag++; } while (raz != e || flag != max);//Пока разница между текущим и предыдущим не будет равна заданной точности или пока не достигнем максимального числа итераций if (flag == max) printf("Выход из цикла по числу итераций\n"); else printf("%.4f\n", x1); system("pause"); }
Решение задачи: «Вычисление члена последовательности с заданной точностью»
textual
Листинг программы
while(raz > e && flag != max);
ИИ поможет Вам:
- решить любую задачу по программированию
- объяснить код
- расставить комментарии в коде
- и т.д