Вычисление члена последовательности с заданной точностью - C (СИ)

Узнай цену своей работы

Формулировка задачи:

Последовательность задана формулой нулевого члена: x0=1+t и формулой для вычисления следующего члена через предыдущий: x(n+1)=x(n)-(x(n)^2-a)/x(n).Изначально мы вводим t, a и точность e с клавиатуры. Затем считаем каждый следующий член последовательности, пока разница между последующим и предыдущим не будет равна e. Если последовательность не сходится, то выходим из цикла по числу итераций. Cобственно мой код:
#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");
 
}
Если я правильно понял, то при a и t равными 1 мы получаем последовательность 2 0.5 2 0.5 и т.д. Т.е при задании точности 1.5 должно выводиться "0.5", но выводится "Выход из цикла по числу итераций". Что я делаю не так?

Решение задачи: «Вычисление члена последовательности с заданной точностью»

textual
Листинг программы
while(raz > e &&  flag != max);

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


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

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

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