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

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

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

Как сделать чтоб все проверки вызывались одной функцией? - C++

16.06.2014, 15:53. Просмотров 316. Ответов 11
Метки нет (Все метки)

Доброго времени суток! Имеется код с огромным числом вот таких проверок:

C++
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
cout << "\nEnter number (-100000 to 100000): ";
while(!(cin>>x) || (x<(-100000)) || (x>100000) || cin.get() != '\n' ) //incorrect input protection
{
    cout<<"Input incorrect. Please, try again.\n";
    cin.clear(); // resets all bits of stream
    cin.sync(); //remove data from the buffer
    cout << "\nEnter number (-100000 to 100000): ";
}
 
cout << "\nEnter accuracy (1 to 5): ";
while(!(cin>>e) || (e<1) || (e>5) || cin.get() != '\n' ) //incorrect input protection
{
    cout<<"Input incorrect. Please, try again.\n";
    cin.clear(); // resets all bits of stream
    cin.sync(); //remove data from the buffer
    cout << "\nEnter accuracy (1 to 5): ";
}
Как сделать чтоб все эти проверки вызывались одной функцией? Спасибо заранее.
Лучшие ответы (1)
Similar
Эксперт
41792 / 34177 / 6122
Регистрация: 12.04.2006
Сообщений: 57,940
16.06.2014, 15:53     Как сделать чтоб все проверки вызывались одной функцией?
Посмотрите здесь:

как сделать чтоб был руский язык? C++
C++ как сделать чтоб программа открывала файлы file1 и file2
C++ Как сделать чтоб слово высвечивалось по середине экрана
C++ ошибочка. не понимаю как сделать чтоб типы соответствовали
C++ Как сделать чтоб отделяло IP и Port
Как можно сделать цикл проверки всех файлов в одной папке C++
как сделать, чтоб кнопка работала? C++
После регистрации реклама в сообщениях будет скрыта и будут доступны все возможности форума.
nmcf
4506 / 3844 / 1294
Регистрация: 14.04.2014
Сообщений: 15,087
16.06.2014, 16:01     Как сделать чтоб все проверки вызывались одной функцией? #2
Условие в while и тип вводимой переменной везде одинаков?
Donville
0 / 0 / 0
Регистрация: 16.02.2014
Сообщений: 112
16.06.2014, 16:04  [ТС]     Как сделать чтоб все проверки вызывались одной функцией? #3
И можно ли сделать чтобы менялся тип элемента в функции? Там x - float, а e - int, но функцию одну можно сделать для них?

Добавлено через 1 минуту
Вот) Опоздал просто. Тип разный может быть. Возможно ли для разных типов сделать одну функцию? while везде одинаков, но, как Вы уже заметили, текст меняется.
Тамика
Котовчанин
 Аватар для Тамика
866 / 446 / 132
Регистрация: 16.02.2010
Сообщений: 2,665
Записей в блоге: 27
16.06.2014, 16:07     Как сделать чтоб все проверки вызывались одной функцией? #4
C++
1
2
3
4
5
6
7
8
9
10
void check_something(char num, int low, int upper)
{
    if (num < low || num > upper || num != '\n')
    {
        std::cout<<"Input incorrect. Please, try again.\n";
        std::cin.clear(); 
        std::cin.sync();
        std::cout << "\nEnter accuracy ("<< low << " to " << upper <<"): ";
    }
}
Donville
0 / 0 / 0
Регистрация: 16.02.2014
Сообщений: 112
16.06.2014, 16:12  [ТС]     Как сделать чтоб все проверки вызывались одной функцией? #5
Тамика, Спасибо, но не совсем то. Мы вот тут
C++
1
!(cin>>x)
проверяем подходит ли нам тип, а если char, то теряется суть проверки. Да и текст в последнем cout меняется. Его нужно как-то скопировать.

Сделать можно несколько функций для разных типов, а как с текстом в cout быть я понятия не имею.
Тамика
Котовчанин
 Аватар для Тамика
866 / 446 / 132
Регистрация: 16.02.2010
Сообщений: 2,665
Записей в блоге: 27
16.06.2014, 16:16     Как сделать чтоб все проверки вызывались одной функцией? #6
Цитата Сообщение от Donville Посмотреть сообщение
Сделать можно несколько функций для разных типов, а как с текстом в cout быть я понятия не имею.
С каким именно текстом?
Donville
0 / 0 / 0
Регистрация: 16.02.2014
Сообщений: 112
16.06.2014, 16:18  [ТС]     Как сделать чтоб все проверки вызывались одной функцией? #7
Тут такой
C++
1
cout << "\nEnter number (-100000 to 100000): ";
а тут такой
C++
1
cout << "\nEnter accuracy (1 to 5): ";
и там еще дюжина. Текст разный, а проверка, по сути, одинаковая везде.
Тамика
Котовчанин
 Аватар для Тамика
866 / 446 / 132
Регистрация: 16.02.2010
Сообщений: 2,665
Записей в блоге: 27
16.06.2014, 16:25     Как сделать чтоб все проверки вызывались одной функцией? #8
Функция принимает параметры low и upper. Вводите их при вызове функции.
Donville
0 / 0 / 0
Регистрация: 16.02.2014
Сообщений: 112
16.06.2014, 16:31  [ТС]     Как сделать чтоб все проверки вызывались одной функцией? #9
Цитата Сообщение от Тамика Посмотреть сообщение
"\nEnter accuracy ... ";
Вот этот текст в Вашем коде должен каждый раз менятся.
Тамика
Котовчанин
 Аватар для Тамика
866 / 446 / 132
Регистрация: 16.02.2010
Сообщений: 2,665
Записей в блоге: 27
16.06.2014, 16:40     Как сделать чтоб все проверки вызывались одной функцией? #10
Цитата Сообщение от Donville Посмотреть сообщение
Вот этот текст в Вашем коде должен каждый раз менятся.
Ааа... Нет, тут не подскажу. Сама не знаю. Ручками, наверное.
Или извратом - тоже передавать слово параметром в функцию.
Donville
0 / 0 / 0
Регистрация: 16.02.2014
Сообщений: 112
17.06.2014, 02:11  [ТС]     Как сделать чтоб все проверки вызывались одной функцией? #11
nmcf, выручай

Добавлено через 7 часов 23 минуты
Что, не знает никто?
MoreAnswers
Эксперт
37091 / 29110 / 5898
Регистрация: 17.06.2006
Сообщений: 43,301
17.06.2014, 03:21     Как сделать чтоб все проверки вызывались одной функцией?
Еще ссылки по теме:

Как сделать так чтоб работало? Что с компилятором? C++
Как сделать так , чтоб возвращались первоначальные значения массива, перед работой с функцией C++
Сделать все задание в одной программе) C++
Как хитро сделать перехват функций в dll и чтоб с лого C++
Как сделать чтоб массив задавался и выводился перед выводом меню? C++

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

Или воспользуйтесь поиском по форуму:
alsav22
5411 / 4807 / 442
Регистрация: 04.06.2011
Сообщений: 13,587
17.06.2014, 03:21     Как сделать чтоб все проверки вызывались одной функцией? #12
Сообщение было отмечено автором темы, экспертом или модератором как ответ
C++
1
2
3
4
5
6
7
8
9
10
11
12
13
template <class T>
void check_something(T low, T upper, string str)
{
    std::cout << str << low << " to " << upper <<"): ";
    T x;
    while (!(cin >> x) || x < low || x > upper || cin.get() != '\n')
    {
        std::cout<<"Input incorrect. Please, try again.\n";
        std::cin.clear(); 
        std::cin.sync();
        std::cout << str << low << " to " << upper <<"): ";
    }
}
C++
1
check_something (2, 6, "Enter accuracy (");
Yandex
Объявления
17.06.2014, 03:21     Как сделать чтоб все проверки вызывались одной функцией?
Ответ Создать тему
Опции темы

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