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

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

Войти
Регистрация
Восстановить пароль
Другие темы раздела
C++ с++ програмеры, есть исходник, гляньте http://www.cyberforum.ru/cpp-beginners/thread656703.html
В итоге прога должна спрашивать имя файла, а выдодить количество строк ( не считаются только пустые, комменты типа "//" и "/* */" ) эти исходники я взяты с разных книг, почти то что нужно для решения только если б кто подправил //Р11-17.CPP - чтение текстового файла с помощью операции >> #include <stdlib.h> *// Для функции exit() #include <fstream.h> // Для файловых потоков...
C++ элементы массива Привет всем Вообщем сижу и заполняю массив M рандомными числами, потом суммирую их и добавляю в другой массив A но когда вывожу массив A на экран получается всего лишь одно число...в чем проблема int main() { int a; for(int i=0;i<12;i++) { 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++, может быть, уже что-то забыл и поэтому прошу вас посмотреть этот дурацкий код: void eatspace (char* str) { int i=0,j=0; while ((*(str+i) = *(str+j++))!='\0') if (*(str+i)!=' ') i++; return; }
C++ Сдвиги. (<< и >>) http://www.cyberforum.ru/cpp-beginners/thread656671.html
Всем привет, подскажите плз, насчёт сдвигов, а то я чилал в инете и что то ничего не понял. Вот например какой будет результат? int x = 3 << 1; Зарание спасибо. :)
C++ Нахождение функции Дана функция: Необходимо написать программу нахождения y. Как правильно записать эту функцию в C++? У меня есть пара вариантов, но я не знаю правильно ли я делаю вообще: a = -2*x; y = pow(exp(x),a)+log(sqrt(x*x+4))+pow(sinx, 3)x; или y=exp(-2*x)+log(sqrt(x*x+4))+pow(sin(x),3); подробнее

Показать сообщение отдельно
alsav22
5416 / 4812 / 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;
}
 
КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin® Version 3.8.9
Copyright ©2000 - 2017, vBulletin Solutions, Inc.
Рейтинг@Mail.ru