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

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

Восстановить пароль Регистрация
 
Flash_2oo9
3 / 3 / 0
Регистрация: 31.10.2012
Сообщений: 142
27.09.2013, 18:29     ввод только чисел #1
Помогите отловить ненужные символы.
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 ..." Не предлагая повторного ввода
После регистрации реклама в сообщениях будет скрыта и будут доступны все возможности форума.
Belfegor
Ghost
 Аватар для Belfegor
172 / 172 / 6
Регистрация: 16.09.2012
Сообщений: 524
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;
}
alsav22
5282 / 4801 / 442
Регистрация: 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);
    }
}
Olivеr
 Аватар для Olivеr
411 / 407 / 13
Регистрация: 06.10.2011
Сообщений: 830
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;
}
Genn55
341 / 188 / 37
Регистрация: 26.12.2012
Сообщений: 658
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;
}
Yandex
Объявления
27.09.2013, 23:55     ввод только чисел
Ответ Создать тему
Опции темы

Текущее время: 07:57. Часовой пояс GMT +3.
КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin® Version 3.8.9
Copyright ©2000 - 2016, vBulletin Solutions, Inc.
Рейтинг@Mail.ru