Другие языки программирования и технологии

Система ввода правильного числа в С++

Есть небольшой код, но почему то я не могу ввести правильные номера ( 0 - 5 )
Я хочу сделать так, что бы пользователь мог ввести только числа от 0 до 5.
Но он всегда пишет что неправильный ввод.

while ( switcH != 0 ) {
cin >> switcH;
while ( switcH != 1||2||3||4||5||0 ) {
cout << " Неверный ввод, введите номер пункта! " << endl;
cin >> switcH;
}

switch (switcH ) {
int i;
while(!(cin>>i) || (i<0 || i>5)) {cin.clear();cin.ignore();}
cout << i << endl;

или так с символами
char c;
while(!(cin>>c) || (c<'0' || c>'5'));
cout << c << endl;

(диапазон + защита от кривого ввода (введено не число))
В чем минус первого метода - можно ввести число 5.5 или 5f - C++ отбросит всё что неправильно по его мнению после числа. В т. ч. и если ввести н-р дробную часть.

В чем минус второго - надо потом преобразовывать символ в число - правда операция простая int i=c-'0';
Сергей Иванов
Сергей Иванов
84 764
Лучший ответ
Андрей Фабрисенко По моему легче в switch
default поставить.
А свитч в цикл
Вот сама программка:

$ cat case.cpp
#include
using namespace std;
int main ()
{
char c;
bool done = false;

while (!done) {
cin >> c;
switch (c) {
case '0':
case '1':
case '2':
case '3':
case '4':
case '5': cout << "input: " << c << endl;
break;
case 'q': done = true;
break;
default: break; // do nothing
} // end switch
} // end while
return 0;
}

Вот мы её собрали:

$ g++ case.cpp -o case

Без шума и пыли. Вот мы её запустили:

$ ./case
0
input: 0
1
input: 1
2
input: 2
3
input: 3
4
input: 4
5
input: 5
6
7
8
9
0
input: 0
q
$

Знак доллара -- это shell prompt.
Уже Покушал
Уже Покушал
78 937
Андрей Фабрисенко Эх, большой ( Там программка то на уровне 6 класса.