как проверить целое ли число язык си
мне нужно что бы пользователь ввел три целых чисел а если числа не целые то программа закрывалась я пытался делать проверку вот пример только здесь я зделал одно число что бы было проще забыл сказать нельзя использовать библеотеку math.h
int main() < int num1 = 0; scanf("%d", &num1); if (num1 % 1 != 0)< printf("eror"); >printf("%d", num1); >
только здесь оно округляет число сразу после ввода а это мне не нужно дальше я поменял переменную на double но компилятор стал ругать меня
int main() < double num1; scanf("%lf", &num1); if (num1 % 1 !=0) < printf("eror"); >printf("%lf", num1); >
помогите решить эту проблему
Отслеживать
задан 19 июн 2021 в 10:01
Михаил Кузнецов Михаил Кузнецов
29 1 1 золотой знак 1 1 серебряный знак 6 6 бронзовых знаков
Остаток от деления вещественного числа на 1 — это сильно :-). Сделайте проще: используйте приведение типа в условии (int) num1 != num1 . Кроме этого, Ваша программа напечатает число в любом случае, даже если оно не «целое». Но это уже другая история.
19 июн 2021 в 10:15
я сделал вот так ((int)num1 % 1 != num1) и все работает спасибо. проверил еще так работает (num1 % 1 != num1)
19 июн 2021 в 10:25
нееет! зачем (int)num1 % 1 ?! приведение типа уже делает целое число, зачем для целого числа бесполезное %1 . Тем более, что итоговая проверка с таким условием будет неверной.
19 июн 2021 в 10:28
мантисса типа double имеет размер 52 бита. К типу int нельзя приводить. Только к int64_t.
19 июн 2021 в 10:35
не судите строго я только начал учить программирование :3 я просто скопировал и вставил в место старого условия и оно не работает( или я вас не правильно понял
19 июн 2021 в 10:35
3 ответа 3
Сортировка: Сброс на вариант по умолчанию
# include # include # include static inline bool isint ( double d ) < return d == (int64_t)d ; >int main()
isint(3) = 1 isint(3.1) = 0
дополнение
Если нужна точность и важность пределов целочисленного типа, то нужен двойной контроль. Сначала считываем число, потом пишем в строку. Будет считать, что введённое выражение удовлетворяет условиям, если запись целочисленного числа в сторку совпадает с введённым выражением. Не поддерживается запись с экспонентой 1e1 , с точкой 1.0 и положительное число со знаком плюс +1 .
char s[100] ; scanf("%99s",s); int i ; sscanf(s,"%d",&i); char s2[100] ; sprintf(s2,"%d",i); if (strcmp(s,s2)==0) printf("integer %d\n",i); else printf("is not integer %s\n",s);
integer 1234567890 is not integer 12345678901
Как ввести целое число и определить, верно ли, что все его цифры четные (язык Си)?
Добрый день.
Попалась задачка. Надо ввести целое число, а затем определить чётность и нечётность всех цифр.
Пробовал вот так:
int main(void) 0) < if((a%10)%2==0) printf("YES "); else printf("NO "); a/=10; >return 0; >
Увы, код показывает чётность и нечётность каждой цифры, однако мне необходимо, чтобы он выводил»NO» даже в том случае, если в числе есть хоть одна нечётная цифра (с выводом «YES» аналогичная история). Не могли вы подсказать, в чём ошибка? Чувствую, что я неправильно воспользовался операторами и где-то тут накосячил.
- Вопрос задан более двух лет назад
- 2215 просмотров
Как проверить целое ли число c
Пользователь
Регистрация: 12.11.2007
Сообщений: 31
проверка числа на дробность
Как в с++ можно проверить, является ли введенное число целым ли дробным?
Форумчанин
Регистрация: 22.11.2007
Сообщений: 224
Наверняка есть способ лучше, я в си не силён, но всё-таки:
if (a - int(a) == 0)
Пользователь
Регистрация: 12.11.2007
Сообщений: 31
Нашарил функцию typeid.
Как на счет такого синтаксиса?
if (typeid(v) !=typeid(n))-возвращает целое число!
Похожие темы | ||||
Тема | Автор | Раздел | Ответов | Последнее сообщение |
ПроВерка Подключения | &RiU | Общие вопросы Delphi | 8 | 18.10.2011 05:45 |
Проверка орфографии | Serg113 | Microsoft Office Word | 1 | 09.05.2008 22:29 |
ДАНЫ 4 ЧИСЛА X Y Z W составит программу найти произведение все положительные нечетные числа | Woland-itn | Паскаль, Turbo Pascal, PascalABC.NET | 3 | 23.03.2008 21:49 |
Проверка условия | Luciferium | БД в Delphi | 1 | 05.06.2007 16:23 |
Проверка правильности | KORT | Помощь студентам | 3 | 23.04.2007 20:23 |
Как определить, целое число или нет
Как определить введенное число с клавиатуры целое или нет
Напишите программу на языке программирования С, определяющую является ли введённое пользователем.
Определить, целое число ввел пользователь или вещественное
Доброго времени. Нужно определить целое число ввел пользователь или вещественное. Как это можно.
Ввести целое число и определить, является ли данное число простым или нет
Ввести целое число и определить является ли данное число простым или нет. (желательно простым кодом.
Определить, кратно введенное с клавиатуры число пяти, или нет
нужно срочно решения помогите в visual studio оператор if определитель кратно введенное число с.