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

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

Войти
Регистрация
Восстановить пароль
 
fisharik
0 / 0 / 0
Регистрация: 14.02.2014
Сообщений: 4
#1

Проверка корректности ввода - C++

14.02.2014, 21:22. Просмотров 422. Ответов 5
Метки нет (Все метки)

Есть класс Point, в котором поля int X, int Y, int Z; (X должен быть больше Y)
Есть конструктор без параметров
C++
1
2
3
4
5
6
7
8
Point::Point(){
    cout << "Enter X: ";
    cin >> X;
    cout << "Enter Y: ";
    cin >> Y;
    cout << "Enter Z: ";
    cin >> Z;
}
Как мне сделать, чтобы ввод начинался занова, если пользователь неверно ввел данные(например, ввел буквы или нецелые числа, и если X<Y то тоже занова)
Similar
Эксперт
41792 / 34177 / 6122
Регистрация: 12.04.2006
Сообщений: 57,940
14.02.2014, 21:22     Проверка корректности ввода
Посмотрите здесь:

C++ 3. Найти сумму элементов с k1-го по k2-ой, где k1 и k2 вводятся с клавиатуры. Сделайте проверку корректности их ввода.
C++ Проверка корректности ввода чисел
C++ Проверка корректности вводимых данных
Проверка корректности введенных строк C++
Проверка корректности вводимых значений C++
C++ Контроль корректности ввода числа
Проверка корректности данных C++
C++ Проверка корректности xml документа
C++ Проверка корректности ввода
C++ Проверка корректности введенного пароля - Ошибка strcmp
Алгоритм Луна (Проверка корректности номера банковской карты) C++
Алгоритм Луна (Проверка корректности номера банковской карты) C++

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

Или воспользуйтесь поиском по форуму:
После регистрации реклама в сообщениях будет скрыта и будут доступны все возможности форума.
Amandosov
Знаток
156 / 156 / 65
Регистрация: 18.11.2012
Сообщений: 411
Записей в блоге: 2
14.02.2014, 21:51     Проверка корректности ввода #2
Наверно в конструкторе проверять надо
fisharik
0 / 0 / 0
Регистрация: 14.02.2014
Сообщений: 4
14.02.2014, 21:54  [ТС]     Проверка корректности ввода #3
Это да. Мне сама проверка нужна.
Amandosov
Знаток
156 / 156 / 65
Регистрация: 18.11.2012
Сообщений: 411
Записей в блоге: 2
14.02.2014, 22:00     Проверка корректности ввода #4
C++
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
 Point::Point(){
    cout << "Enter X: ";
    while((cin >> X)&& (!cin.good())
{
cout<<"Try again! Enter X:";
}
    cout << "Enter Y: ";
    while(((cin >> Y)&& (!cin.good())||((X<Y)&& (cin.good())))
{
cout<<"Try again! Enter Y:";
}
    cout << "Enter Z: ";
    while((cin >> Z)&& (!cin.good())
{
cout<<"Try again! Enter Z:";
}
}
fisharik
0 / 0 / 0
Регистрация: 14.02.2014
Сообщений: 4
14.02.2014, 22:10  [ТС]     Проверка корректности ввода #5
неправильно работает. при вводе Y ввожу символ, и программа заканчивается.
Когда ввожу числа, проверка X>Y работает.
somebdy
7 / 7 / 1
Регистрация: 30.04.2013
Сообщений: 25
14.02.2014, 22:35     Проверка корректности ввода #6
fisharik, такой вариант
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
template <typename T>
bool input(const char * msg, T & dest) {
    std::cout << msg;
 
    if (std::cin >> dest)
        return true;
 
    std::cin.clear();
    std::cin.get();
 
    return false;
}
 
Point::Point() {
    do {
        while(!input("Enter X: ", X))
            std::cout << "Error! Try Again!\n";
        while(!input("Enter Y: ", Y))
            std::cout << "Error! Try Again!\n";
        if (X < Y)
            std::cout << "Error! X must be greater than Y!\n";
    } while (X < Y);
 
    while (!input("Enter Z: ", Z))
        std::cout << "Error! Try Again!\n";
}
Yandex
Объявления
14.02.2014, 22:35     Проверка корректности ввода
Ответ Создать тему
Опции темы

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