Есть небольшой код, но почему то я не могу ввести правильные номера ( 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';
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';
Вот сама программка:
$ 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.
$ 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.
Андрей Фабрисенко
Эх, большой ( Там программка то на уровне 6 класса.
Похожие вопросы
- Delphi как сделать ввод только чисел с точкой ?
- Как из десятичной системы счисления перевести число в троичную?
- После ввода числа определить слово. PHP.
- аскаль. Написать программу которая переводит число из одной системы счисления в другую
- Помогите перевести числа в разные системы счисления. HELP!!!
- Переведите число 111 из десятичной системы счисления в двоичную систему счисления.
- При делении отрицательного числа выводит не правильный ответ (assembler). Если беру числа 127 13 10, пишет переполнение
- С++ Проверка на некорректный ввод значения переменной
- Число 10 (в десятичной системе счисления) в двоичной системе счисления имеет вид???
- Ввод чисел в ASM
default поставить.
А свитч в цикл