Форум программистов, компьютерный форум CyberForum.ru
Наши страницы

С++ для начинающих

Войти
Регистрация
Восстановить пароль
 
Mr. Pyatachok
8 / 8 / 0
Регистрация: 30.06.2011
Сообщений: 250
#1

ввод чисел - C++

24.01.2012, 20:26. Просмотров 770. Ответов 10
Метки нет (Все метки)

Здраствуйте, граждане!
Есть вопросик:
Даны 2 числа: int a, float b.
Если нетяжело, то покажите мне, идиоту, функцию чтобы можно было проверить что вводятся только числа, а не числа с символами (что привидет к зацикливанию).
Буду весьма рад, если продемонстрируете код как-нибудь попроще и с пояснением.
0
Надоела реклама? Зарегистрируйтесь и она исчезнет полностью.
Similar
Эксперт
41792 / 34177 / 6122
Регистрация: 12.04.2006
Сообщений: 57,940
24.01.2012, 20:26
Здравствуйте! Я подобрал для вас темы с ответами на вопрос ввод чисел (C++):

Запросить ввод нескольких чисел, и определить, сколько из этих чисел отрицательны - C++
Привет всем!Прошу помочь мне в решении задачи!Надо написать такую программу,чтобы она просила пользователя ввести несколько чисел и потом...

Ограничение на ввод чисел и проверка чисел - C++
решить квадратное уравнение. Сделала задачу, а преподаватель сказал, что это слишком легко и усложнила задачу, т.е. теперь нужна проверка...

Ввод чисел - C++
Возможно избитый вопрос, но нигде не могу найти решения, такая задача: ... int a; cout<<"a = "; cin>>a; ... в случае если...

Ввод чисел - C++
Столкнулся с такой проблемой. Когда заранее известно количество чисел, то все легко вводится с помощью массива, а как вводить числа, если...

Ввод чисел - C++
Вводить с клавиатуры числа до тех пор, пока не будет нажата клавиша <<Esc>>. На экран вывести количество вводимых чисел.(С++)

ввод только чисел - C++
Помогите отловить ненужные символы. void input_data(int number) // { if(number == 1) { }else if(number == 2) {

10
go
Эксперт С++
3586 / 1366 / 128
Регистрация: 16.04.2009
Сообщений: 4,528
24.01.2012, 20:30 #2
Насколько сложная должна быть проверка? Если просто, чтобы не вылетала программа, при вводе не числа, то вот
C
1
2
3
4
5
6
do
{
   k = scanf("%d", &a);
   fl(); // Ваша функция для очистки буфера клавиатуры
}
while ( !k );
1
Mr. Pyatachok
8 / 8 / 0
Регистрация: 30.06.2011
Сообщений: 250
24.01.2012, 20:40  [ТС] #3
напр.
cin>>first;
функция проверки
cin>>second;
функция проверки

а вообще, как хотите, просто хочу разобраться как вообще такое возможно
0
go
Эксперт С++
3586 / 1366 / 128
Регистрация: 16.04.2009
Сообщений: 4,528
24.01.2012, 21:03 #4
Mr. Pyatachok,
C++
1
2
3
4
5
6
7
8
9
10
std::string s;
int a;
bool fl;
do 
{
   std::cin >> s; // Читайте в строку
   fl = MyFun(s, a); // Ваша функция проверки
   fl(); // Чистим буфер
}
while ( !fl );
Добавлено через 19 минут
Mr. Pyatachok, в С++ можно стандартными средствами почистить буфер
1
Mr. Pyatachok
8 / 8 / 0
Регистрация: 30.06.2011
Сообщений: 250
24.01.2012, 21:52  [ТС] #5
Хорошо, а вот как тогда написать функцию проверки целого числа и вещественного?
Заранее буду благодарен
0
go
Эксперт С++
3586 / 1366 / 128
Регистрация: 16.04.2009
Сообщений: 4,528
24.01.2012, 21:56 #6
Mr. Pyatachok, обычная проверка, содержаться ли в строки не циферные символы. Сможете сами?

Добавлено через 31 секунду
Цитата Сообщение от Mr. Pyatachok Посмотреть сообщение
и вещественного?
Ну с вещественными чуть сложнее, там точка и т.д.

Добавлено через 58 секунд
Просто не раз уже делали такие проверки, можешь поиском воспользоваться.
1
Mr. Pyatachok
8 / 8 / 0
Регистрация: 30.06.2011
Сообщений: 250
24.01.2012, 21:56  [ТС] #7
честно говоря нет
0
easybudda
Модератор
Эксперт CЭксперт С++
9680 / 5630 / 954
Регистрация: 25.07.2009
Сообщений: 10,804
24.01.2012, 22:18 #8
Цитата Сообщение от go Посмотреть сообщение
Насколько сложная должна быть проверка? Если просто, чтобы не вылетала программа, при вводе не числа, то вот
C
1
2
3
4
5
6
do
{
   k = scanf("%d", &a);
   fl(); // Ваша функция для очистки буфера клавиатуры
}
while ( !k );
На корню неправильный подход: во-первых функция scanf() может возвращать значение меньше нуля, а во-вторых получается, что независимо от того, что вернёт scanf(), функция f() всё равно будет вызвана.
http://www.freebsd.org/cgi/man.cgi?q...lt&format=html
1
go
Эксперт С++
3586 / 1366 / 128
Регистрация: 16.04.2009
Сообщений: 4,528
24.01.2012, 22:26 #9
easybudda, я бы не стал так говорить, единственное, что упустил

C
1
while ( k != 1 );
Добавлено через 10 секунд
Цитата Сообщение от easybudda Посмотреть сообщение
функция f() всё равно будет вызвана.
А что это за функция?
1
easybudda
Модератор
Эксперт CЭксперт С++
9680 / 5630 / 954
Регистрация: 25.07.2009
Сообщений: 10,804
24.01.2012, 22:36 #10
Цитата Сообщение от go Посмотреть сообщение
А что это за функция?
Это я вместо fl её так обозвал, но это у Вас правильно, она и должна в любом случае выполняться, а вот с возвращаемыми значениями функций всё-таки поаккуратнее надо - сам на эти грабли наступал...
1
Mr. Pyatachok
8 / 8 / 0
Регистрация: 30.06.2011
Сообщений: 250
24.01.2012, 22:54  [ТС] #11
а можно еще подробнее пожалуйста
0
24.01.2012, 22:54
MoreAnswers
Эксперт
37091 / 29110 / 5898
Регистрация: 17.06.2006
Сообщений: 43,301
24.01.2012, 22:54
Привет! Вот еще темы с ответами:

ввод больших чисел - C++
Подскажите как с помощью cin>> ввести большое число. Т.е. вводится число -8249387687698765197486594659746078497642542442345342 и мне...

Ввод чисел в массив - C++
Пользователь вводит 10-ти значное число, как сделать так чтоб каждое число этого большого числа попадало в массив без нажатия интер. То...

Ввод чисел в массив - C++
Составьте программу, которая осуществляет ввод чисел в массив. Программа рассматривает введенное число как денежную сумму в рублях. Цель...

Ввод и сложение чисел - C++
Есть вот такой код. Программа запоминает 20 введенных чисел и складывает их. Вроде бы все нормально только нужно разбить ее на 2 части-main...


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

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

КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin® Version 3.8.9
Copyright ©2000 - 2017, vBulletin Solutions, Inc.
Рейтинг@Mail.ru