Доброго дня! Объясните, пожалуйста, как это сделать в С. Что-то типа такого
int S;
printf("Введите S:\n");
scanf("%d", &S);
Но ввод может быть как 10, так и 13.4, и если на вводе float, то как его поместить в переменную? Понимаю что нужно определить тип данных, но для этого сначала нужно данные поместить в переменную. Гугл не помог. Спасибо за помощь :)
Ввод сохрани как строку отдай в strstr(str,".") и если там есть точка то значит есть флоат (хотя может и нет если у тебя там по иному случаю точки могут быть), scanf поддерживает регулярные выражения. Или опять же берёшь строку берёшь кусок от разделителя до разделителя проверяешь если там есть точка то это флоат и передаёшь тому scanf который флоат читает иначе передаёшь тому который int читает.
Вообще, лучше всего поменять логику, чтобы знать, что тебе придёт. Если по каким-то причинам этот вариант не рассматривается, то бери стоку и пытайся преобразовать её к другим типам
Но ввод может быть как 10, так и 13.4, и если на вводе float, то как его поместить в переменную?
У вас проблема не в C/scanf/объявление переменных. А в постановке задачи. Что значить поместить в переменную что-угодно? А если пользователь введёт «quit»? Тут про точку начали бодягу, но и 1e3 вполне валидное действительное число без точки. Вначале стоит определиться, вы работаете быстро и тупо с данными, либо долго и нудно проверяете на валидность и разъясняете пользователю, где он не то вводит. Нужна вам точность после запятой или нет. Если нужна, то почему вы хотите работать с int?
В си нету абстракции данных. Здесь надо считывать число в виде строки, анализировать, а затем уже конвертировать в нужный числовой тип с помощью atoi и atof.
Но у меня есть уверенность, что ты не совсем верно понял задание лабораторной.
Но у меня есть уверенность, что ты не совсем верно понял задание лабораторной.
Найти все возможные значения S и F из лабораторной работы №2 для задаваемого диапазона и шага изменения указанной величины. Если величина целая, то и шаг целый. Решение задачи организовать с помощью операторов циклов.
Вот мне надо проверить тип S и F, и если хоть один целочисленный, то остальные округлить до целого.