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

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

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

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

16.06.2014, 15:53. Просмотров 323. Ответов 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
4922 / 4260 / 1426
Регистрация: 14.04.2014
Сообщений: 16,746
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 везде одинаков, но, как Вы уже заметили, текст меняется.
Тамика
Котовчанин
869 / 449 / 141
Регистрация: 16.02.2010
Сообщений: 2,830
Записей в блоге: 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 быть я понятия не имею.
Тамика
Котовчанин
869 / 449 / 141
Регистрация: 16.02.2010
Сообщений: 2,830
Записей в блоге: 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): ";
и там еще дюжина. Текст разный, а проверка, по сути, одинаковая везде.
Тамика
Котовчанин
869 / 449 / 141
Регистрация: 16.02.2010
Сообщений: 2,830
Записей в блоге: 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 ... ";
Вот этот текст в Вашем коде должен каждый раз менятся.
Тамика
Котовчанин
869 / 449 / 141
Регистрация: 16.02.2010
Сообщений: 2,830
Записей в блоге: 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
5415 / 4811 / 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     Как сделать чтоб все проверки вызывались одной функцией?
Ответ Создать тему
Опции темы

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