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

Вопрос по циклу и switch'у в С++

Помогите, пожалуйста, правильно составить конструкцию.
Есть Switch с несколькими кейсами:

switch (X)
{
case '1':
cout << ;
break;
(... еще несколько кейсов);
default:
cout <<;
break;

Мне нужно поместить данный свитч в цикл, т. е чтобы если введенное значение не подходило ни под одно значение кейса - срабатывал default и цикл повторялся заново. Пользователь ввел некорректные данные - "Вы ввели некорректные данные" - "Введите данные снова", т. е длилось по кругу, пока пользователь не введет, например варианты от (а до c - 3 варианта ответа). Как лучше оформить данный код? (С++)
#include <iostream>
using namespace std;
enum class key { a = 97, b, c, d, e, f, g, h, i, j, k, l, m, n, o, p, q, r, s, t, u, v, w, x, y, z };
int main() {
auto flag = true;
do {
cout << (flag ? "Input: " : "Error! Please try again: ");
const auto k = static_cast(tolower(cin.get()));
cin.ignore(numeric_limits<streamsize>::max(), '\n');
flag = true;
switch (k) {
case key::a: cout << "This \"A\"\n"; break;
case key::b: cout << "This \"B\"\n"; break;
case key::c: cout << "This \"C\"\n"; break;
default: flag = false;
}
} while (!flag);
cout << "The End!\n";
system("pause");
}
AR
Abdumannon Ro`ziyev
97 493
Лучший ответ
делай default без break, так же в него засунь cin>>

X = -1; //значение, не попадающее ни в какие интервалы
switch (x)
case 1: ...break;
case 2: ...break;
...
default:
{
cin<<X; //без брейка
}
}
все, нах.. й
**
*********i ***********
40 076
Помести switch в цикл, как ты и пишешь. И ввод значения должен быть в этом цикле. В чём сложность?

Я бы написал так:
while (true) {
cout << "Введите значение X: ";
cin >> X;
switch (X) {
case 1: ...break;
...
default: continue; // продолжение цикла
}
break; // окончание цикла
}
*********i *********** switch и есть цикл
do {
cin >> X;
switch (X) {
...
default: X = -1; // присваивай X какое-то определённое значение, не используемое в case-ах
}
} while (X == -1); // повторяй цикл при этом значении
begin:
switch(X)
{
....
default:
goto begin;
break;
}
Anarhiy 13
Anarhiy 13
4 673