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

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

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

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

16.06.2014, 15:53. Просмотров 338. Ответов 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): ";
}
Как сделать чтоб все эти проверки вызывались одной функцией? Спасибо заранее.
0
Лучшие ответы (1)
Надоела реклама? Зарегистрируйтесь и она исчезнет полностью.
Similar
Эксперт
41792 / 34177 / 6122
Регистрация: 12.04.2006
Сообщений: 57,940
16.06.2014, 15:53
Здравствуйте! Я подобрал для вас темы с ответами на вопрос Как сделать чтоб все проверки вызывались одной функцией? (C++):

Как сделать так , чтоб возвращались первоначальные значения массива, перед работой с функцией - C++
В моей задаче программа работает с одним массивом на всём протяжении, как сделать так чтоб перед каждой функцией массив возвращался в...

Как можно сделать цикл проверки всех файлов в одной папке - C++
Здравствуйте, можете ли кто-нибудь подсказать как можно сделать цикл проверки всех файлов в одной папке?

Сделать все задание в одной программе) - C++
1)дан целочисленный массив. проверить образует ли элементы геометрическую прогрессию. если да то вывести знаменатель прогрессии, если нет...

как сделать, чтоб кнопка работала? - C++
есть форма с кнопкой, как сделать, чтоб кнопка работала?

Как сделать чтоб отделяло IP и Port - C++
Нужен код для c++ чтоб программа поняла где ип,порт (IP:PORT) Я нуб помогите пожалуйста , молю вас,помогите добрые земляни в решении...

как сделать чтоб был руский язык? - C++
там где я редактивирую код проги, хочу видеть руские буквы (как коментарии). как это сделать?

11
nmcf
5324 / 4644 / 1553
Регистрация: 14.04.2014
Сообщений: 18,479
16.06.2014, 16:01 #2
Условие в while и тип вводимой переменной везде одинаков?
0
Donville
0 / 0 / 0
Регистрация: 16.02.2014
Сообщений: 113
16.06.2014, 16:04  [ТС] #3
И можно ли сделать чтобы менялся тип элемента в функции? Там x - float, а e - int, но функцию одну можно сделать для них?

Добавлено через 1 минуту
Вот) Опоздал просто. Тип разный может быть. Возможно ли для разных типов сделать одну функцию? while везде одинаков, но, как Вы уже заметили, текст меняется.
0
Тамика
Котовчанин
911 / 454 / 144
Регистрация: 16.02.2010
Сообщений: 3,113
Записей в блоге: 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 <<"): ";
    }
}
1
Donville
0 / 0 / 0
Регистрация: 16.02.2014
Сообщений: 113
16.06.2014, 16:12  [ТС] #5
Тамика, Спасибо, но не совсем то. Мы вот тут
C++
1
!(cin>>x)
проверяем подходит ли нам тип, а если char, то теряется суть проверки. Да и текст в последнем cout меняется. Его нужно как-то скопировать.

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

Добавлено через 7 часов 23 минуты
Что, не знает никто?
0
alsav22
5421 / 4816 / 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 (");
1
MoreAnswers
Эксперт
37091 / 29110 / 5898
Регистрация: 17.06.2006
Сообщений: 43,301
17.06.2014, 03:21
Привет! Вот еще темы с ответами:

Как сделать так чтоб работало? Что с компилятором? - C++
ошибка: No such file or directory #include &lt;iostream&gt; using namespace std; int main() {const int n=15; int i;double...

Как сделать чтоб потомок получал данные от предка? - C++
в класс Trend нужно принять данные Vx и Vy из класса MyClass. Компилятор выдает сообщение &quot;компилятор должен иметь тип класса&quot; //...

Как сделать чтоб слово высвечивалось по середине экрана - C++
как сделать чтоб слово высвечивалось по середине экрана в С++

ошибочка. не понимаю как сделать чтоб типы соответствовали - C++
по надобности переделывала паскалевскую блок-схему под С++.начало выбивать много ошибок. вот с одной из них не могу справиться ...


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

Или воспользуйтесь поиском по форуму:
12
Yandex
Объявления
17.06.2014, 03:21
Ответ Создать тему
Опции темы

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