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

Проверка на ввод символа - C++

Войти
Регистрация
Восстановить пароль
Другие темы раздела
C++ с++ програмеры, есть исходник, гляньте http://www.cyberforum.ru/cpp-beginners/thread656703.html
В итоге прога должна спрашивать имя файла, а выдодить количество строк ( не считаются только пустые, комменты типа "//" и "/* */" ) эти исходники я взяты с разных книг, почти то что...
C++ элементы массива Привет всем Вообщем сижу и заполняю массив M рандомными числами, потом суммирую их и добавляю в другой массив A но когда вывожу массив A на экран получается всего лишь одно число...в чем проблема ... http://www.cyberforum.ru/cpp-beginners/thread656694.html
C++ Re: Ответ: Последовательность и статический массив
uses crt; var A:real; i,k:longint; bi,s:real; begin clrscr; write('A=');readln(a); i:=0;bi:=0;{начальные значения} while bi<=a do{пока очередное число не больше А} begin
Почему срабатывает rtl C++
Не могу понять, в чем ошибка. Брат делает задания из одной книги и на одной из функций VC++ падает. Я уже долго не работал с C++, может быть, уже что-то забыл и поэтому прошу вас посмотреть этот...
C++ Сдвиги. (<< и >>) http://www.cyberforum.ru/cpp-beginners/thread656671.html
Всем привет, подскажите плз, насчёт сдвигов, а то я чилал в инете и что то ничего не понял. Вот например какой будет результат? int x = 3 << 1; Зарание спасибо. :)
C++ Нахождение функции Дана функция: Необходимо написать программу нахождения y. Как правильно записать эту функцию в C++? У меня есть пара вариантов, но я не знаю правильно ли я делаю вообще: a = -2*x; y =... подробнее

Показать сообщение отдельно
alsav22
5421 / 4816 / 442
Регистрация: 04.06.2011
Сообщений: 13,587
23.09.2012, 20:20
После cin >> поставьте эту конструкцию:
C++
1
2
cin.clear();
while (cin.get() != '\n');
Добавлено через 8 минут
Цитата Сообщение от snyppimylt Посмотреть сообщение
почему так?
Если первым идёт не то, что cin >> ожидает (например символ буквы, когда ожидается число), то cin устанавливает флаг ошибки, и дальнейшая работа с потоком ввода становится невозможной. То что не ввелось, остаётся в потоке ввода. cin.clear(); сбрасывает флаг ошибки, а cin.get(), в цикле while(), будет извлекать символы из потока ввода, пока не встретит символ новой строки - '\n' (попадает в поток при нажатии Enter), извлечёт и его. Таким образом, поток ввода очистится и с ним снова можно будет работать.

Добавлено через 13 минут
Обыгрывать такие ситуации можно, например, так:
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 <windows.h>
#include <cstdlib>
#include <iostream>
using namespace std;
 
int main()
{ 
 SetConsoleCP(1251);
 SetConsoleOutputCP(1251);
 
int a;
cout << "Введите число "; 
while (!(cin >> a))
{
    cin.clear();
    while (cin.get() != '\n');
    cout << "Неверный ввод. Повторите." << endl;
    cout <<"Введите число "; 
} 
cout << a << endl;
 
system("pause");
return 0;
}
2
 
КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin® Version 3.8.9
Copyright ©2000 - 2017, vBulletin Solutions, Inc.
Рейтинг@Mail.ru