Вот код программы, которая раскладывает синус через ряд Тейлора.
#include <stdio.h>
#include <math.h>
int main()
{
// Определяем типы данных.
float x, stx, sinx, e, realx, y, pi, factorial;
int inc, z;
double i;
// Ввод данных.
printf("in x:");
scanf("%f", &x);
pi = 3.141592653;
e = 0.001;
// Проверка данных и преобразование к нужному виду.
if (isdigit(x) == 0)
{
printf ("Wrong format\n");
}
else
{
if (x > 360 || x < 0)
{
y = x/360;
y = fabs (y);
modf(y, &i);
if (x > 360)
{
realx = x-i*360;
}
if (x < 0)
{
i = i + 1;
realx = x + i*360;
}
}
else
{
realx = x;
}
realx = pi*realx/180;
stx = realx;
factorial = 1;
sinx = 0;
inc = 1;
z = 1;
// Раскладываем синус через ряд Тейлора.
while (stx/factorial >= e)
{
sinx = sinx + z*stx/factorial;
inc = inc + 2;
stx = stx*realx*realx;
factorial = factorial*(inc-1)*inc;
z = z*(-1);
}
// Вывод данных.
printf ("%.3f\n", sinx);
}
return 0;
}
Хочу сделать проверку на введённые данные. Чтобы если были не цифры, то он ругался бы. Ну вот функцию нашёл isdigit. И вроде всё правильно применил, но он на всё пишет "Wrong format". Сам не допру почему, вроде если не цифра, то возвращает фунция 0, ну я условие и сделал, а всё равно не работает так, как надо. В общем подскажите в чём косяк то?