Форум программистов, компьютерный форум, киберфорум
C для начинающих
Войти
Регистрация
Восстановить пароль
Карта форума Темы раздела Блоги Сообщество Поиск Заказать работу  
 
Рейтинг 4.83/191: Рейтинг темы: голосов - 191, средняя оценка - 4.83
9 / 8 / 4
Регистрация: 22.10.2017
Сообщений: 162
1

Проверка на ввод именно числа

19.02.2018, 19:55. Показов 37160. Ответов 5
Метки нет (Все метки)

Author24 — интернет-сервис помощи студентам
Как в си проверить, чтоб вводилось именно целое число, а не буква или десятичное число?
0
Programming
Эксперт
94731 / 64177 / 26122
Регистрация: 12.04.2006
Сообщений: 116,782
19.02.2018, 19:55
Ответы с готовыми решениями:

Проверка на ввод числа
Помогите сделать проверку на ввод числа. Если введены буквы, то выводится ошибка и нужно ввести...

Проверка на ввод числа
do { cin.clear(); cin.sync(); cout << "Введите N: "; cin>>N; if(cin.fail())...

Проверка на ввод числа
Есть задание: Создайте приложение для обучения малышей устному счету. Программа должна...

Проверка на ввод числа
У меня есть поле для вставки стоимости услуги: <input type="text" required name="price" size="20"...

5
2305 / 1131 / 702
Регистрация: 25.04.2016
Сообщений: 3,224
19.02.2018, 20:59 2
C
1
2
3
4
5
6
7
8
9
10
11
12
#include <stdio.h>
 
int main (void)
{
    int n;
 
    printf("n = ");
    scanf("%d", &n);
 
    printf("You input %d\n", n);
    return 0;
}
функция scanf при вводе числа с точкой обрежет дробную часть, при вводе буквы, запишет 0, таким образом вы гарантированно получите целое число в n
0
296 / 227 / 102
Регистрация: 11.08.2016
Сообщений: 780
19.02.2018, 21:03 3
stake-k26, а если я ввел бы 0? Это ведь тоже цифра? Результат получается будет одиноковым .
Может лучше получать ввод всегда, но использовать функцию isdigit? Результатом проверки будет либо ИСТИНА, либо ЛОЖЬ...

ЗЫ, перечитал ТЗ и понял, что врятли ... здесь будет исключительно проверка на цифру, но десятичная тоже будет цифра ..
0
2305 / 1131 / 702
Регистрация: 25.04.2016
Сообщений: 3,224
19.02.2018, 22:14 4
D3m1an, тут все зависит от того,ч то именно нам нужно? Вернее не нам, а ТС. Если ему необходимо, чтобы программа остро реагировала на все, что она получает с клавиатуры, то тут вообще лучше использовать
while((c=getchar()) != '\n') if (c>='0' && c<='9') {n*=10; n+= (c - '0');}

А если ему нужно просто обезопасить программу от попадания в нее неправильного значения, то тут и scanf хватит. Да, возможно программа будет неправильно считать, но зато это не приведет к сбою в программе.

Еще можно сделать, например вот так:

C
1
2
3
4
5
6
7
8
9
10
11
12
13
#include <stdio.h>
 
int main (void)
{
    int n;
 
    printf("n = ");
    int test = scanf("%d", &n);
 
    printf("You input %d\n", n);
    printf("test is %d\n", test);
    return 0;
}
В случае ввода буквы, в test будет записано 0, в случае целого числа - будет 1

Т.е. мы можем сделать, например вот так:
C
1
2
3
4
5
6
7
8
9
10
11
#include <stdio.h>
 
int main (void)
{
    int n;
 
    printf("n = ");
    if (scanf("%d", &n)) printf("You input %d\n", n);
 
    return 0;
}
И таким образом полностью исключим возможность ввода букв, а любое число с точкой будет обрезано до целого.
0
296 / 227 / 102
Регистрация: 11.08.2016
Сообщений: 780
19.02.2018, 22:43 5
Давайте тогда сообщать об этом вызывающей стороне...

C
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
#include <stdio.h>
 
int main (void)
{
    int n;
 
    printf("n = ");
    if(!scanf("%d", &n))
    {
        printf("ERROR\n");
        return -1;
    }
    else
        printf("You input %d\n", n);
 
    return 0;
}
0
stake-k26
19.02.2018, 23:40     Проверка на ввод именно числа
  #6

Не по теме:

D3m1an, это уже не существенно.

0
IT_Exp
Эксперт
87844 / 49110 / 22898
Регистрация: 17.06.2006
Сообщений: 92,604
19.02.2018, 23:40

Проверка на ввод числа
в borland С нужно осуществить проверку на ввод, пользователь дожлен ввести число, как проверить...

Проверка на ввод числа
Задание:вычислить факториал. Подскажите пожалуйста почему когда ввожу символ или отрицательное...

Проверка на ввод числа
Приветствую! Ребят возникла такая проблемка, я новичок и очень много ещё не знаю, прежде я конечно...

Проверка на корректный ввод числа
Мне нужно вывести hello world то количество раз, какое напишет пользователь, но если введено что-то...


Искать еще темы с ответами

Или воспользуйтесь поиском по форуму:
6
Ответ Создать тему
КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin
Copyright ©2000 - 2024, CyberForum.ru