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

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

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

Ошибка в коде - C++

28.02.2014, 21:34. Просмотров 260. Ответов 5
Метки нет (Все метки)

Цикл работает пока вводятся tempЫ и цикл_офф равен фалс. Когда пишу в темп "no more", cycle_off становится тру и цикл прекращается. Проблема в том что дальше окно закрывается и код keep_window_open(); не выполняется. Т.е в консоли то я должен ввести что нибудь что бы окно закрыть, а этого нет.
Если цикл закомментить то всё работает нормально. В чём проблема никак не врублюсь.
C++
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
#include "std_lib_facilities.h"
using namespace std;
int main()
{
    vector<string> names;
    vector<int> scores;
    string temp_names;
    int temp_scores;
    bool cycle_off = false;
 
    while (cin>>temp_names>>temp_scores && cycle_off == false)
    {
        if(temp_names == "No more" || temp_names == "no more") {cycle_off = true;}
        else{
        names.push_back(temp_names);
        scores.push_back(temp_scores);}
    }
    cout << "Cycle closed";
    cout << endl;
 
    keep_window_open();
    return 0;
}
Similar
Эксперт
41792 / 34177 / 6122
Регистрация: 12.04.2006
Сообщений: 57,940
28.02.2014, 21:34     Ошибка в коде
Посмотрите здесь:

Ошибка в коде - C++
Не могу исправить ошибку в 12 и 13 строке, прошу помочь. //programma podbora parol9 #include &lt;iostream&gt; using std::cout; using...

Ошибка в коде - C++
Сделал пример по книге, но есть какая то ошибка кода! Помогите! // advenand.cpp // применение операции логического И #include...

Ошибка в коде - C++
#include &quot;stdafx.h&quot; #include &lt;iostream&gt; #include &quot;math.h&quot; #ifdef _DEBUG #define new DEBUG_NEW #endif CWinApp theApp; ...

Ошибка в коде. - C++
Доброго времени суток задали нам сегодня задачу решить примерhttp://pic.ipicture.ru/uploads/091102/kKTR6dTEmX.png написал код но он не...

ошибка в коде. - C++
вечер добрый. помогите найти ошибку. #include &lt;iostream&gt; template &lt;class T&gt; class stack { private: const static unsigned...

Ошибка в коде - C++
Помогите пожалуйста найти ошибку #include &quot;stdafx.h&quot; #include&lt;iostream&gt; #include&lt;cmath&gt; #include &lt;conio.h&gt; #include &lt;stdlib.h&gt;...

Ошибка в коде C++ - C++
Надо присвоить все данные значения в result используя цикл в цикле у меня получается значение на много больше чем должно быть что не так? ...

Ошибка в коде - C++
4 программы по отдельности все запускаются, а после объединения в одну - выдает следующие ошибки: 1&gt;cpp(23): warning C4838:...

Ошибка в коде - C++
Задание: Напишите и продемонстрируйте работу программы, выводящей на экран в двоичной форме целое число типа int . Для получения...

Ошибка в коде - C++
#include &lt;string&gt; #include &lt;iostream&gt; #include &lt;iostream&gt; #include &lt;iterator&gt; #include &lt;ctime&gt; #include &lt;cstdlib&gt; ...


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

Или воспользуйтесь поиском по форуму:
После регистрации реклама в сообщениях будет скрыта и будут доступны все возможности форума.
о_О_Кто_здесь
11 / 11 / 1
Регистрация: 06.06.2011
Сообщений: 152
28.02.2014, 21:52     Ошибка в коде #2
А чем вас не устроил
C++
1
system ("pause");
alsav22
5416 / 4812 / 442
Регистрация: 04.06.2011
Сообщений: 13,587
28.02.2014, 22:14     Ошибка в коде #3
Как вы через cin >> собрались "no more" ввести?
C++
1
2
3
4
5
6
7
while (cycle_off == false && cin>>temp_names>>temp_scores)
    {
        if(temp_names == "No" || temp_names == "no") {cycle_off = true;}
        else{
        names.push_back(temp_names);
        scores.push_back(temp_scores);}
    }
ValeryS
Модератор
6537 / 5003 / 460
Регистрация: 14.02.2011
Сообщений: 16,642
28.02.2014, 22:17     Ошибка в коде #4
Цитата Сообщение от 775533 Посмотреть сообщение
В чём проблема никак не врублюсь.
в том что ты вводишь значения в цикле
и когда введешь No more в потоке остается еще символ
и keep_window_open(); обрабатывает его думая что ты нажал на кнопку
посмотри вот здесь была похожая проблема и её решение
http://www.bitmasters.ru/114.shtml
вижу два пути
или перед использованием keep_window_open(); очищать поток cin.clear();
или использовать
C++
1
system ("pause");
как предложил о_О_Кто_здесь,
775533
0 / 0 / 0
Регистрация: 28.02.2014
Сообщений: 2
28.02.2014, 23:33  [ТС]     Ошибка в коде #5
Хм, когда я в консоли ввожу No more и жму интер, получается после пробела слово more записывается под следующем индексом в стринговый вектор names? А в интовую переменную ничего не идёт вообще?
Получается стринговый вектор names у меня становится на 2 значения длиннее чем scores. И вообще условие if у меня нифига не срабатывает? Я правильно понял?

Насчёт
C++
1
system ("pause");
Я пока до этого в учебнике не дошёл. Не хотелось бы использовать то о чём пока не сказано. Мне бы, если есть возможность, обойтись только циклами, условиями и переменными что бы заполнить два вектора.
alsav22
5416 / 4812 / 442
Регистрация: 04.06.2011
Сообщений: 13,587
28.02.2014, 23:44     Ошибка в коде #6
Цитата Сообщение от 775533 Посмотреть сообщение
Хм, когда я в консоли ввожу No more и жму интер, получается после пробела слово more записывается под следующем индексом в стринговый вектор names? А в интовую переменную ничего не идёт вообще?
Когда вводите "No more", в temp_names считывается "No", дальше начинается чтение в temp_scores. cin >> ожидает цифру (число), приходит буква, поток ломается (устанавливается флаг ошибки), "more" остаётся в очереди ввода.
Происходит выход из цикла (поток - false). Вызывается keep_window_open(). В ней, cin.clear() делает поток рабочим, cin >> считывает первый символ "more" (который остался в очереди ввода) и программа завершается, не останавливаясть на ввод символа.
Yandex
Объявления
28.02.2014, 23:44     Ошибка в коде
Ответ Создать тему
Опции темы

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