Перейти к содержимому

Как проверить целое ли число c

  • автор:

Как ввести целое число и определить, верно ли, что все его цифры четные (язык Си)?

Добрый день.
Попалась задачка. Надо ввести целое число, а затем определить чётность и нечётность всех цифр.
Пробовал вот так:

int main(void) 0) < if((a%10)%2==0) printf("YES "); else printf("NO "); a/=10; >return 0; >

Увы, код показывает чётность и нечётность каждой цифры, однако мне необходимо, чтобы он выводил»NO» даже в том случае, если в числе есть хоть одна нечётная цифра (с выводом «YES» аналогичная история). Не могли вы подсказать, в чём ошибка? Чувствую, что я неправильно воспользовался операторами и где-то тут накосячил.

  • Вопрос задан более двух лет назад
  • 2148 просмотров

как проверить целое ли число язык си

мне нужно что бы пользователь ввел три целых чисел а если числа не целые то программа закрывалась я пытался делать проверку вот пример только здесь я зделал одно число что бы было проще забыл сказать нельзя использовать библеотеку 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 

Целое число

Результат работы программы показан на рисунке 1. Как-то нужно определить, является ли введенное значение — вещественным значением, возможно в этом нам поможет статья о приведении типов данных.

Целое число

Рисунок 1 — Целое число

// integer_number.cpp: определяет точку входа для консольного приложения. #include «stdafx.h» #include using namespace std; int main(int argc, char* argv[]) < double number; // вводимое число setlocale(LC_ALL, "rus"); cout -> «; cin >> number; if ( (number — int(number)) != 0 ) // если разность больше нуля, то введённое число — число с плавающей точкой cout

Как проверить целое ли число c

Добрый день подскажите пожалуйста. вот мой код

число = Строка.Номерстроки \ 300,
если Число — Окр (число, 0,0) = 0 тогда
целое

есть ли что-нибудь покороче в одну строку?

если цел(число)= число
ответ = ?(МоеЧисло = Цел(МоеЧисло), «целое», «нецелое»);
?(цел(число)= число,целое,дробное)
(1)не поможет, оператор определен только для целых чисел
всем большое спасибо
+(5)а, хотя есл применить, к первой строке, то самое то
ответ = ?((Строка.Номерстроки % 300) = 0, «целое», «нецелое»);
ЕСЛи Строка.Номерстроки % 300 = 0 тогда
?(Найти(Строка(пЧисло),»,»), «Дробное», «Целое»)
(5) Не болтайте ерундой.
а что такое %?
Что такое %?
где это в СП?
(12)остаток от целочисленного деления
12% 5 = 2
6%3 = 0
и т.д.

Пипец
Если Окр(МоёЧисло,0,0) = МоёЧисло тогда
Сообщить(«Оно Целое»);
иначе
Сообщить(«Оно НЕ Целое»);
КонецЕсли;

спасибо
(16) мне нужно просто проверять и переходить в другое условие

Требовать и эффективности, и гибкости от одной и той же программы — все равно, что искать очаровательную и скромную жену. по-видимому, нам следует остановиться на чем-то одном из двух. Фредерик Брукс-младший

Добавить комментарий

Ваш адрес email не будет опубликован. Обязательные поля помечены *