подскажите что не так, зацикливается

/* Программа Lab9_1 */

#include <stdio.h>
#include <windows.h>
#include <math.h>

int main()
{
    float x,x0,xn,hx,y;

    SetConsoleCP(1251);
    SetConsoleOutputCP(1251);

    printf("Введите x0(hx)xn\n");

    scanf("%f",&x0);
    scanf("%f",&hx);
    scanf("%f",&xn);

    x = x0;
    do
    { 
        if(x>=5)
            printf("x = %f  Функция не определена\n", x);
        else
        {
            if (x < 1)
                y = x*x;
            else 
                if (x >= 1 && x <= 3)
                    y = sqrt(x+1);
                else
                    y = sin(x);
            printf("x = %f  y = %f\n", x, y);
            x = x + hx; 
        };


    } while (x <= xn + hx/3);
    return 0;
}

Ответы (1 шт):

Автор решения: Аноним

Я нашел причину. Код сам по себе работает корректно, а когда вводите вещественные числа, возможно вместо точки вводите запятую, или наоборот (например, не 0.5, а 0,5). Вводил вот такие данные: - первый раз: 2 0.25 4 - второй: 0.5 0.1 2 Всё корректно работало. Если у Вас зацикливается, то попробуйте ввести вот так: - первый раз: 2 0,25 4 - второй: 0,5 0,1 2

→ Ссылка