Форум программистов, компьютерный форум CyberForum.ru

Проверка ввода в с++ (целое/вещественное) - C++

Восстановить пароль Регистрация
 
zakrutka
0 / 0 / 0
Регистрация: 19.04.2016
Сообщений: 4
19.04.2016, 18:06     Проверка ввода в с++ (целое/вещественное) #1
Здравствуйте, необходима помощь в написании программы! Необходимо использовать ввод значения с клавиатуры - про этом если в задаче используется тип " INT " - то программы должна пропускать только значения типа - "1" , "99" , "3212". т.е. только цифры. Столкнулся на форуме с решением моего вопроса, но там при вводе - "13.2.3.4." программа понимала как " INT " и записывала "13". Помогите разобраться. Может есть полезные статьи? Заранее благодарен.
После регистрации реклама в сообщениях будет скрыта и будут доступны все возможности форума.
nmcf
4324 / 3745 / 1260
Регистрация: 14.04.2014
Сообщений: 14,698
19.04.2016, 19:20     Проверка ввода в с++ (целое/вещественное) #2
C++
1
2
3
int n;
cin >> n;
if (cin.fail() || cin.peek() != '\n') // Ошибка
zakrutka
0 / 0 / 0
Регистрация: 19.04.2016
Сообщений: 4
19.04.2016, 20:47  [ТС]     Проверка ввода в с++ (целое/вещественное) #3
а если это в цикл (do - while) использовать cin.clear() ?
не работает что-то...
nmcf
4324 / 3745 / 1260
Регистрация: 14.04.2014
Сообщений: 14,698
19.04.2016, 20:53     Проверка ввода в с++ (целое/вещественное) #4
А ты поток-то очистил? Где текст программы?
meJevin
 Аватар для meJevin
154 / 146 / 57
Регистрация: 18.11.2015
Сообщений: 608
Завершенные тесты: 1
19.04.2016, 21:35     Проверка ввода в с++ (целое/вещественное) #5
Так можно

C++
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
#include <iostream>
#include <conio.h>
 
void cinNum(int& var, char const * text) {
 
    int intLimit = std::numeric_limits<int>::max();
 
    std::cout << text;
    while (!(std::cin >> var) || (std::cin.peek() != '\n')) {
        std::cin.clear();
        std::cin.ignore(intLimit, '\n');
        std::cout << text;
    }
    std::cin.ignore(intLimit, '\n');
}
 
int main() {
    setlocale(LC_ALL, "");
    int number;
 
    cinNum(number, "Введите int: ");
 
    _getch();
}
Добавлено через 1 минуту
Эта функция берет в первый аргумент переменную, а во второй текст, который будет заново и заново выводить, пока пользователь не введет правильные данные.
Yandex
Объявления
19.04.2016, 21:35     Проверка ввода в с++ (целое/вещественное)
Ответ Создать тему

Метки
с++
Опции темы

Текущее время: 10:33. Часовой пояс GMT +3.
КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin® Version 3.8.9
Copyright ©2000 - 2016, vBulletin Solutions, Inc.
Рейтинг@Mail.ru