Выполнял задание, встал перед вопросом, все выполнено, но необходима проверка ввода. Получилось следующее
if ((std::cin >> variant).good()) break;
std::cin.clear();
cin.ignore(std::numeric_limits<std::size_t>::max(), '\n');
Так проверялось после каждого считывания переменных, кода вышло много, как можно объеденить это в функцию, но чтобы после неудавшейся проверки я по новой получал сообщение c просьбой повторить ввод координаты.
x=
Так считываю
cout << "Пожалуйста введите координаты первой точки:" << endl << "x=";
cin >> p1.x;
Пробовал только так, не нравится, да и значение получал внутри функции.
double func()
{
double x;
for (;;) {
cout << ">" << std::flush;
if ((std::cin >> x).good()) break;
std::cin.clear();
cin.ignore(std::numeric_limits<std::size_t>::max(), '\n');
}return x;
}
К плюсам не привык, не ругайте.
Например, добавьте в параметры функции текст приглашения - что-то вроде
int inputInt(const char * prompt,
int m = std::numeric_limits<std::size_t>::min(),
int M = std::numeric_limits<std::size_t>::max())
{
int N;
for (;;) {
std::cout << prompt << " (целое от " << m << " до " << M << "): " << std::flush;
if ((std::cin >> N).good() && (m <= N) && (N <= M)) return N;
if (std::cin.fail()) {
std::cin.clear();
std::cout << "Неверный ввод, повторите.\n";
} else {
std::cout << "Число вне допустимого диапазона значений. Повторите ввод.\n";
}
std::cin.ignore(std::numeric_limits<std::size_t>::max(),'\n');
}
}
Ну, и вызываете как
int n = inputInt("Введите число студентов",0,50);
(я навесил еще и проверку диапазона).
Айфон мало держит заряд, разбираемся с проблемой вместе с AppLab
Перевод документов на английский язык: Важность и ключевые аспекты
Допустим вам требуется вручную выровнять все поля структуры по 4 байтаВыглядит это примерно так: