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

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

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

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

28.02.2014, 21:34. Просмотров 265. Ответов 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;
}
0
Similar
Эксперт
41792 / 34177 / 6122
Регистрация: 12.04.2006
Сообщений: 57,940
28.02.2014, 21:34
Здравствуйте! Я подобрал для вас темы с ответами на вопрос Ошибка в коде (C++):

Ошибка в коде (Ошибка сегментирования (core dumped) - C++
Добрый день. Подскажите пожалуйста, где ошибка в коде? char ch; string s; while ((ch = cin.get()) != '0' ) ...

В чём ошибка.В коде там где коментарий там ошибка поучается. - C++
#include &lt;iostream&gt; #include &lt;Windows.h&gt; using namespace std; class CMyString{ char *pStr; public: ...

Ошибка в коде - C++
В ходе выполнения работы необходимо создать программу, которая определяет и инициализирует двумерный массив целых значений и затем...

Ошибка в коде - 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++
Здравствуйте, практикуюсь, решаю задачи, но вот одна задачка меня смутила. Я её решил и код по идее должен работать правильно, но есть одна...

Надоела реклама? Зарегистрируйтесь и она исчезнет полностью.
о_О_Кто_здесь
11 / 11 / 1
Регистрация: 06.06.2011
Сообщений: 152
28.02.2014, 21:52 #2
А чем вас не устроил
C++
1
system ("pause");
1
alsav22
5419 / 4815 / 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);}
    }
1
ValeryS
Модератор
6631 / 5039 / 466
Регистрация: 14.02.2011
Сообщений: 16,844
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");
как предложил о_О_Кто_здесь,
1
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");
Я пока до этого в учебнике не дошёл. Не хотелось бы использовать то о чём пока не сказано. Мне бы, если есть возможность, обойтись только циклами, условиями и переменными что бы заполнить два вектора.
0
alsav22
5419 / 4815 / 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" (который остался в очереди ввода) и программа завершается, не останавливаясть на ввод символа.
1
MoreAnswers
Эксперт
37091 / 29110 / 5898
Регистрация: 17.06.2006
Сообщений: 43,301
28.02.2014, 23:44
Привет! Вот еще темы с ответами:

Ошибка в коде - C++
Почему программа не открывает указанный файл? Кто знает, помогите! #include &quot;stdafx.h&quot; #include &lt;iostream&gt; #include &lt;fstream&gt; ...

Ошибка в коде с++ - C++
#include &lt;iostream&gt; #include &quot;math.h&quot; using namespace std; int main() { double z1, z2, m; cin &gt;&gt; m; z1 =...

C++ ошибка в коде - C++
#include &lt;iostream&gt; #include &lt;math.h&gt; using namespace std; int main(){ double a=1.2; double b=2.7; cout&lt;&lt; avg (a, b);...

Ошибка с else/else if в коде - C++
Подчеркивает else(else if все нормально), ошибка:требуется оператор. Как с этим бороться?) Заранее спасибо. ............ case'f':...


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

Или воспользуйтесь поиском по форуму:
Yandex
Объявления
28.02.2014, 23:44
Ответ Создать тему
Опции темы

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