Форум программистов, компьютерный форум, киберфорум
Наши страницы
С++ для начинающих
Войти
Регистрация
Восстановить пароль
 
Flash_2oo9
3 / 3 / 7
Регистрация: 31.10.2012
Сообщений: 142
#1

ввод только чисел - C++

27.09.2013, 18:29. Просмотров 396. Ответов 4
Метки нет (Все метки)

Помогите отловить ненужные символы.
C++
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
void input_data(int number) //
{
    if(number == 1)
    {
    
    }else if(number == 2)
    {
        
    }else if(number == 3)
    {
    
    }else if(number == 4)
    {
 
    }else if(number == 5)
    {
    
    }else if(number == 6)
    {
    
    }else
    {
        cout<<"WARNING!!! INCCORECT INPUT DATA"<<endl;
        cout<<"PLEASE TRY AGAIN"<<endl<<endl;
        cin>>number;
        input_data(number);
    }
}
Данный метод отлично работает с цифрами-буквами. Но при вводе, например "+", циклично зависает, выводя "WARNING!!! INCCORECT INPUT DATA PLEASE TRY AGAIN ..." Не предлагая повторного ввода
0
Надоела реклама? Зарегистрируйтесь и она исчезнет полностью.
Similar
Эксперт
41792 / 34177 / 6122
Регистрация: 12.04.2006
Сообщений: 57,940
27.09.2013, 18:29
Я подобрал для вас темы с готовыми решениями и ответами на вопрос ввод только чисел (C++):

Ввод только чисел в cin>>value
Доброго времени суток! Написал программу, которая считывает и выводит элементы...

Фильтр на ввод только целых неотрицательных чисел
Как создать функцию, позволяющую вводить только целые неотрицательные числа в...

Как осуществить ввод только чисел и знаков операций?
мне нужно чтобы при вводе я не мог ничего вводить кроме чисел и математических...

Как разрешить ввод только чисел типа int?
Доброго времени суток. Подскажите, пожалуйста, как разрешить ввод только чисел...

как осуществить ввод только нечетных целых чисел?
вот в этой программе необходимо ввести n, которое нечетное целое # include...

Ввод в консоле только чисел(запрет ввода других символов)
В консольном варианте с предложением пользователю ввести фразу, содержащую и...

4
Belfegor
Ghost
173 / 173 / 40
Регистрация: 16.09.2012
Сообщений: 526
27.09.2013, 18:39 #2
C++
1
2
3
4
5
#include <cctype>
template<typename T>
void input_data(T dat) {
    return isdigit(dat) ? true : false;
}
1
alsav22
5438 / 4833 / 831
Регистрация: 04.06.2011
Сообщений: 13,587
27.09.2013, 18:52 #3
C++
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
 
void input_data(char number) //
{
    if(number == '1')
    {
    
    }else if(number == '2')
    {
        
    }else if(number == '3')
    {
    
    }else if(number == '4')
    {
 
    }else if(number == '5')
    {
    
    }else if(number == '6')
    {
    
    }else
    {
        cout<<"WARNING!!! INCCORECT INPUT DATA"<<endl;
        cout<<"PLEASE TRY AGAIN"<<endl<<endl;
        cin>>number;
        input_data(number);
    }
}
0
Olivеr
412 / 408 / 95
Регистрация: 06.10.2011
Сообщений: 832
27.09.2013, 18:57 #4
C++
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
#include <iostream>
#include <type_traits>
#include <string>
#include <limits>
 
template <class Arithmetic>
Arithmetic cin_safe
    ( Arithmetic min = std::numeric_limits<Arithmetic>::lowest(),
      Arithmetic max = std::numeric_limits<Arithmetic>::max(),
      const std::string &repeate_msg = std::string() )
{
    static_assert(std::is_arithmetic<Arithmetic>::value, "This function works only with arithmetic types");
    Arithmetic x;
    while ( !(std::cin >> x) || x < min || x > max ) {
        std::cin.clear();
        std::cin.ignore(std::numeric_limits<std::streamsize>::max(), '\n');
        std::cout << repeate_msg;
    }
    return x;
}
 
int main()
{
    auto x = cin_safe<int>(100, 200, "Try again, bro!\n");
    std::cout << "x = " << x;
    return 0;
}
0
Genn55
378 / 225 / 108
Регистрация: 26.12.2012
Сообщений: 744
27.09.2013, 23:55 #5
Подойдет?
C++
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
#include <iostream>
using namespace std;
 
int main()
{
    cout << "Enter the number: " << "\n";
    double var;
    while (!(cin >> var) || cin.peek() != '\n')
    {
        cin.clear();
        while (cin.get() != '\n');
        cout << "Error! Retry input\n";
        cout << "Enter the number: " << "\n";
 
    }
 
    cout << var << "\n";
 
    return 0;
}
0
27.09.2013, 23:55
MoreAnswers
Эксперт
37091 / 29110 / 5898
Регистрация: 17.06.2006
Сообщений: 43,301
27.09.2013, 23:55
Привет! Вот еще темы с решениями:

Вводится некоторое количество чисел. ввод кончается 0. оставить только повторяющиеся числа
Вводится некоторое количество чисел. ввод кончается 0. выбросить все...

Ограничение на ввод символов (разрешить ввод только цифр)
Всем доброго времени суток! Я начал изучать С++ и у меня возник такой...

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

Необходимо изобразить эту программу, без получения рандомных чисел, а ввод с клавиатуры чисел N
Вычислить сумму отрицательных элементов последовательности из N произвольных...


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

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

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