понедельник, 27 апреля 2009 г.

Реализация возможности повторного прогона.

Иногда требуется сделать в софтине возможность повторного прогона. Вот как это делаю я:

do {

// .... код ....

cout << "Ввести 1 для повтора или 2 для выхода и нажать Enter: ";
do {
a = cin.get();
if ((a == '1') || (a == '2'))
break;
else
cout << "Неверный ввод, повторите: " << endl;
// очистка буфера
cin.clear();
cin.ignore(numeric_limits::max(),'\n');
} while (true);
// очистка буфера, обусловлена тем, что нужно избежать
// попадания '\n', вызванного нажатием на Enter, в cin
cin.clear();
cin.ignore(numeric_limits::max(),'\n');
} while (a == '1');
Возможно, не самый изящный способ, но зато довольно простой.

Комментариев нет: