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

С++ для начинающих

Войти
Регистрация
Восстановить пароль
 
Spirit370
1 / 1 / 2
Регистрация: 08.08.2013
Сообщений: 86
#1

Не выполняет ввод - C++

16.02.2014, 00:10. Просмотров 210. Ответов 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
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
#include <iostream>;
#include <cmath>;
#include <vector>;
#include <string>;
#include <algorithm>
#include <windows.h>
 
using namespace ::std;
 
void main () {
    ////Русская мать её кодировка!
    SetConsoleOutputCP(1251);
    SetConsoleCP(1251);
    //-----------------------------
    //Объявление переменных
    vector<string>disliked;
    vector<string> words;
    string temp = " ";
    char bb = ' ';
    //---------------------------
    //Нежелательные слова
    disliked.push_back("Броколи");
    //-----------------------------
 
    do{ // Начало 
        system("cls"); // Очистка экрана
        while (cin>>temp) {words.push_back(temp); } // Заполняем вектор
    
    cout << "Kol Slov: " << words.size() << endl; // Выводим размер вектора
 
    sort(words.begin(),words.end());// Сортируем весь вектор
 
    
    //Замена нежелательных слов-----------------------------------------------------------------------
    for (int i = 0; i<words.size(); ++i) 
    {
        for (int j = 0; j<disliked.size();j++) {
            if (words[i] == disliked[j]) 
            {
                words[i] = "BLEEP";
            } 
        }
    }
    //------------------------------------------------------------------------------------------------
    
     // Цикл вывода вектора---------------------------------------------
    for (int i = 0; i<words.size(); ++i) 
            if (i==0 || words[i-1] !=words[i]) // Проверка на повторение
                cout << words[i] << "\n";
    //------------------------------------------------------------------
    cout << "Продолжаем?(y/n) -> "; 
    cin >> bb;// Не работает
    }
    while(bb == 'y'); // 
 
system("PAUSE");
}
Программа идёт нормально. Выводит
C++
1
cout << "Продолжаем?(y/n) -> ";
, и после пропускает ввод условия выполнения цикла while !!!
C++
1
cin >> bb;
. Цикл завершается , и вместо возможности запустить его заново,
C++
1
system("PAUSE");
выводит сообщение. В чём тут проблема?
Лучшие ответы (1)
Similar
Эксперт
41792 / 34177 / 6122
Регистрация: 12.04.2006
Сообщений: 57,940
16.02.2014, 00:10     Не выполняет ввод
Посмотрите здесь:

Напишите программу, которая запрашивает ввод значений переменных t, b, r целого типа, и выполняет алгоритм - C++
Напишите программу, которая запрашивает ввод значений переменных t, b, r целого типа, и выполняет алгоритм: 1. Если t&lt;b, то переменной z...

Написать программу, которая выполняет ввод даты рождения и выводит на экран произведение этих чисел - C++
Помогите написать программу в которой выполняет ввод даты рождения (число, месяц, год) и выводит на экран произведение этих чисел.

Не выполняет присвоение - C++
вопрос в комментариях. game::game(int size_team_, int begin_counter): size_team(size_team_) { srand(time(NULL)); Tunit...

Не выполняет программу - C++
#include &lt;stdio.h&gt; #include &lt;conio.h&gt; #include &lt;math.h&gt; void main() {int i, n, x, fact, znak, y; printf(&quot; n = &quot;); ...

Не выполняет ветку if - C++
Доброго времени суток. Есть такой код: int main() { setlocale(LC_ALL, &quot;Russian&quot;); float x, E, U = x, Fa = sin(x), Fe = 1...

vs 2005 не выполняет программу - C++
Здравствуйте, недавно начал изучать с++ в общем программу выполняет (на половину) дает вписать высоту, длину и ширину и потом...

После регистрации реклама в сообщениях будет скрыта и будут доступны все возможности форума.
Enotniy
96 / 95 / 14
Регистрация: 15.01.2014
Сообщений: 283
16.02.2014, 00:15     Не выполняет ввод #2
Цитата Сообщение от Spirit370 Посмотреть сообщение
while (cin>>temp)
как вы заставляете остановиться этот цикл?
Spirit370
1 / 1 / 2
Регистрация: 08.08.2013
Сообщений: 86
16.02.2014, 00:21  [ТС]     Не выполняет ввод #3
Цитата Сообщение от Enotniy Посмотреть сообщение
как вы заставляете остановиться этот цикл?
В системе windows поток ввода можно остановить нажатием клавиш <Ctrl+Z> , а в Unix -- <Ctrl+D> .

Просто, вместо ввода строки нажмите <Ctrl+Z> , и после нажмите <Enter>.
Enotniy
96 / 95 / 14
Регистрация: 15.01.2014
Сообщений: 283
16.02.2014, 00:34     Не выполняет ввод #4
Сообщение было отмечено автором темы, экспертом или модератором как ответ
Spirit370, ну так вот и проблема - у вас в потоке остается мусор - его надо очистить,
C++
1
 cin.clear();
Добавлено через 1 минуту
Spirit370, и это плохая идея использовать конец потока (EOF)
Spirit370
1 / 1 / 2
Регистрация: 08.08.2013
Сообщений: 86
16.02.2014, 00:44  [ТС]     Не выполняет ввод #5
Цитата Сообщение от Enotniy Посмотреть сообщение
Spirit370, ну так вот и проблема - у вас в потоке остается мусор - его надо очистить,
C++
1
 cin.clear();
Добавлено через 1 минуту
Spirit370, и это плохая идея использовать конец потока (EOF)
Спасибо , я и не знал таких особенностей потоков =)
MoreAnswers
Эксперт
37091 / 29110 / 5898
Регистрация: 17.06.2006
Сообщений: 43,301
16.02.2014, 00:52     Не выполняет ввод
Еще ссылки по теме:

Программа не выполняет вычисления - C++
Подскажите почему не выполняются вычисление, а просто виснет она и все, никаких действий не происходит, где ошибся? Код программы: ...

выполняет логическое умножение - C++
Написать программу, которая вводит с клавиатуры два натуральных числа и выполняет логическое умножение и сложение этих чисел. На экран...

System не выполняет команду - C++
Почему функция system не выполняет эту команду? system(&quot;ipconfig /release&quot;);

Какую функцию выполняет switch? - C++
какую функцию,выполняет switch?скажем есть switch(10); case 1: case 2: ... break; эта цифра 10,означает что типа 10 выборов...


Искать еще темы с ответами

Или воспользуйтесь поиском по форуму:
Enotniy
96 / 95 / 14
Регистрация: 15.01.2014
Сообщений: 283
16.02.2014, 00:52     Не выполняет ввод #6
Spirit370, проблема в том что что вот эти символы конца строки так и остаются лежать в потоке, когда вы пишите cin они автоматически помещются в вашу переменную bb и поэтому не останавливается
Yandex
Объявления
16.02.2014, 00:52     Не выполняет ввод
Ответ Создать тему
Опции темы

КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin® Version 3.8.9
Copyright ©2000 - 2017, vBulletin Solutions, Inc.
Рейтинг@Mail.ru