0 / 0 / 0
Регистрация: 17.05.2015
Сообщений: 12
1

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

17.05.2015, 20:52. Показов 35480. Ответов 3
Метки нет (Все метки)

Приветствую! Ребят возникла такая проблемка, я новичок и очень много ещё не знаю, прежде я конечно покопался здесь, но ответа не нашел. Так вот в чём она заключается.
Я хочу сделать проверку на ввод чисел, то есть просим ввести число, пользователь вводит его, но надо предусмотреть, чтобы кроме цифр ничего не было. Кто подскажет мне?

P.S. Пишу консольное приложение. Пользовался функцией scanf("%d",&i), путем экспериментов, осознал что если первый символ не является цифрой, то выкидывать из программы будет, если цифра, то в переменную он будет записывать все цифры, то того пока не встретится символ.
Но мне требуется, что если хоть один символ будет введен, мы будем просить пользователя ввести по новой.
Думал решить через символьный массив, ну делаем ввод в символьный массив, после через через функцию atoi прогонял, но она оказался действует также, как и scanf.
В итоге я пришел к выводу, что кроме как проверять посимвольно весь массив символов, проблему не решить))
Но может кто подскажет, есть ли функция, уже созданная, которая вернет нам число или скажет, что введенное пользователем не является числом?))
P.S. P.S. Извиняюсь, за грамматику))
__________________
Помощь в написании контрольных, курсовых и дипломных работ, диссертаций здесь
0
Programming
Эксперт
94731 / 64177 / 26122
Регистрация: 12.04.2006
Сообщений: 116,782
17.05.2015, 20:52
Ответы с готовыми решениями:

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

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

Проверка на на правильный ввод числа
Подскажите простой способ проверки на символ int proverka(int n) { while (n < 0)//??? { cout...

Проверка на корректный ввод числа
Вводится число, если оно введено верно, нужно вывести hello world это количество раз, а если...

3
21 / 21 / 19
Регистрация: 18.03.2014
Сообщений: 148
17.05.2015, 23:46 2
Pifagor_04, все символы имеют ASCII-код (уникальный код для определения символа). Если я не ошибаюсь ASCII-код цифр начинается со значения "48". Т.к. цифр всего десять, значит последнее значение "57".

Теперь ближе к вашей теме: как вариант, можно принимать из консоли строку символов, проверяя затем каждый символ на то, является ли он цифрой. Примерно это так выглядит:
C++
1
2
3
4
5
6
7
8
9
10
11
//объявили строку и ввели
char str[100];
cin>>str;
 
//Есть смысл определить одну логическую переменную
//чтобы знать, как закончился цикл
bool IsBreak=false;
 
//проверяем, является ли строка числом
for (int i=0; str[i]!='\0'; i++) //как вариант можно использовать i<strlen(str) в условии цикла
 if (str[i]<48 || str[i]>57) {cout<<"Не число"; IsBreak=true; break;}
Далее, если IsBreak==true, то попросить пользователя ввести число заново.
1
0 / 0 / 0
Регистрация: 17.05.2015
Сообщений: 12
18.05.2015, 01:11  [ТС] 3
bogdan_017, Благодарю за ваш ответ))
Но к сожалению это не то, чего хотелось бы)) Хоть я пользовался библиотекой <stdio.h>, то есть функции printf и scanf, разницы от этого не меняется))
Цитата Сообщение от Pifagor_04 Посмотреть сообщение
В итоге я пришел к выводу, что кроме как проверять посимвольно весь массив символов, проблему не решить))
, Но как раз вы посимвольно проверяете, а это я и сам уже осуществил, только как выше написал через функции printf и scanf))
Просто я одногруппникам пишу программку, точнее памятку, они совсем так скажем "дурачки", чтобы им меньше было в коде писать, то и требовалась бы функция, которую им бы самим писать не пришлось бы, а воспользоваться можно было бы))
0
lss
939 / 867 / 355
Регистрация: 10.10.2012
Сообщений: 2,706
18.05.2015, 01:44 4
// в строке ввода только цифры, перед которыми могут быть + или -, в других случаях - повторный ввод.
C++
1
2
3
4
5
6
7
int a;
while (!(cin >> a) || (cin.peek() != '\n'))
{
    cin.clear();
    while (cin.get() != '\n');
    cout << "Error!" << endl;
}
3
IT_Exp
Эксперт
87844 / 49110 / 22898
Регистрация: 17.06.2006
Сообщений: 92,604
18.05.2015, 01:44
Помогаю со студенческими работами здесь

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

Проверка на ввод C++
алгоритм-1: 1)ввод x (например 1) 2)вывод y 3)расчет заново (y/n) (работает) алгоритм -2:...

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

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


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

Или воспользуйтесь поиском по форуму:
4
Ответ Создать тему
Опции темы

КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin
Copyright ©2000 - 2022, CyberForum.ru