Форум программистов, компьютерный форум, киберфорум
С++ для начинающих
Войти
Регистрация
Восстановить пароль
Блоги Сообщество Поиск Заказать работу  
 
Рейтинг 4.94/34: Рейтинг темы: голосов - 34, средняя оценка - 4.94
0 / 0 / 0
Регистрация: 07.07.2016
Сообщений: 19

While(cin >> x) или подскажите другие способы заполнения вектора

24.04.2017, 23:26. Показов 6917. Ответов 7
Метки нет (Все метки)

Студворк — интернет-сервис помощи студентам
Читаю Страуструпа. Ну и естественно делаю упражнения. И вот дошел до 5 главы, где понадобилась его гребаная библиотека <std.lib.facilities>(там типо прописаны библиотеки которые нужно подключить и его потрясающие функции), которая на codeblocks не встала, а встала на visual studio 17. И вот в чем проблема,
как мне кажется, когда ввожу в вектор значения с помощью while cin >> x (13 строка), мне же нужно как то выйти и Страуструп предлагает выходить из этого цикла вводом символа "|". Но когда я ввожу этот символ (повторяюсь это мне кажется что ошибка в этом) компилятор просто офигивает от моих деяних, то что я пытаюсь ввести в int char, и просто закрывает мою консоль игнорируя дальнейшие cin. Что делать, как быть?

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
#include<std_lib_facilities.h>
 
using namespace std;
 
int main()
{
    setlocale(0, "");
    int x, s = 0;
    unsigned int i;
    vector<int> v;
 
    cout << "Пожалуйста введите несколько чисел: " << endl;
    while (cin >> x)
        v.push_back(x);
    cout << "Вот числа в векторе, которые вы ввели: " << endl;
    for (i = 0; i < v.size(); i++)
        cout << v[i] << " ";
 
    cout << "Пожалуйста, введите количество чисел, которые хотите просуммировать(начиная с первого): ";
        int k, q;
        cin >> q;
        for (k = 0; k < q; i++)
            s += v[k];
        cout << "Сумма первых " << q << " чисел равна " << s;
}
И картинка, сделанная с помощью записи экрана, "последние секунды жизни" консоли.
Миниатюры
While(cin >> x) или подскажите другие способы заполнения вектора  
0
cpp_developer
Эксперт
20123 / 5690 / 1417
Регистрация: 09.04.2010
Сообщений: 22,546
Блог
24.04.2017, 23:26
Ответы с готовыми решениями:

Collision2d или другие способы существуют?
Добрый вечер. Возникла проблема, я хочу сделать чтобы при столкновении персонажа с объектом он уничтожался, но так как у меня: private...

Подключение и работа в Glut или другие способы простенькой графики
Не могу никак использовать glut и откомпилить найденный в интернете код #include &lt;D:\cpp\GL\glut.h&gt; void Reshape(int width,...

Как раскручивать форум по программированию? Подскажите способы, или дайте советы...
Я создали сайт посвящённый Game Maker + Ultimate 3D.dll, за одно и форум к нему. С сайтам вроде как всё нормально, а вот форум стоячий((( ...

7
1394 / 1023 / 325
Регистрация: 28.07.2012
Сообщений: 2,813
24.04.2017, 23:32
NeUmnik, на вход ожидается число, а ты подаешь туда символ. Соотвественно поток ввода ломается, и условие while (cin >> x) перестает выполняться. Короче, после цикла поток ввода нужно почистить.
Что-то типа такого:
C++
1
2
cin.clear();
cin.ignore(numeric_limits<streamsize>::max(), '\n');
0
331 / 283 / 78
Регистрация: 02.08.2016
Сообщений: 1,008
24.04.2017, 23:37
Цитата Сообщение от NeUmnik Посмотреть сообщение
Но когда я ввожу этот символ (повторяюсь это мне кажется что ошибка в этом) компилятор просто офигивает от моих деяних
Компилятор тут причём? Вы ж смогли запустить программу, значит его дело сделано
0
0 / 0 / 0
Регистрация: 07.07.2016
Сообщений: 19
24.04.2017, 23:52  [ТС]
nonedark2008, Я понимаю что я подаю туда не то что он ждет. Я спрашиваю как мне выйти из цикла тогда? Или может есть другой какой-нибудь способ хороший чтобы с клавиатуры заполнять вектор?
0
1394 / 1023 / 325
Регистрация: 28.07.2012
Сообщений: 2,813
24.04.2017, 23:54
NeUmnik, я уже предложил - починить поток и двигаться дальше.
Можешь например завершать ввод нулем, или заранее указывать кол-во вводимых чисел.
0
Модератор
Эксперт PythonЭксперт JavaЭксперт CЭксперт С++
 Аватар для easybudda
12843 / 7592 / 1766
Регистрация: 25.07.2009
Сообщений: 13,973
24.04.2017, 23:56
NeUmnik, второй пост - ответ на вопрос. Но это ещё не всё,
Цитата Сообщение от NeUmnik Посмотреть сообщение
for (k = 0; k < q; i++)
бесконечный цикл. Сравниваете одну переменную, а увеличиваете другую.
Вот так всё отработало:
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
// #include<std_lib_facilities.h>
#include <iostream>
#include <vector>
 
using namespace std;
 
int main()
{
    setlocale(0, "");
    int x, s = 0;
    unsigned int i;
    vector<int> v;
 
    cout << "Пожалуйста введите несколько чисел: " << endl;
    while (cin >> x)
        v.push_back(x);
 
    cin.clear();
    cin.ignore(255, '\n');
    
    cout << "Вот числа в векторе, которые вы ввели: " << endl;
    for (i = 0; i < v.size(); i++)
        cout << v[i] << " ";
    cout << endl;
 
    cout << "Пожалуйста, введите количество чисел, которые хотите просуммировать(начиная с первого): ";
        int k, q;
        cin >> q;
        for (k = 0; k < q; k++)
            s += v[k];
        cout << "Сумма первых " << q << " чисел равна " << s;
}
0
0 / 0 / 0
Регистрация: 07.07.2016
Сообщений: 19
25.04.2017, 00:00  [ТС]
easybudda, спасибо. Но это я просто в отчаянии был, так как не понимал что происходит и менял переменные зачем то. Но потом понял что дело не в них.

Добавлено через 58 секунд
nonedark2008, понял, спасибо. Не знал что это чинит поток
0
1394 / 1023 / 325
Регистрация: 28.07.2012
Сообщений: 2,813
25.04.2017, 00:04
Цитата Сообщение от NeUmnik Посмотреть сообщение
Не знал что это чинит поток
Первый метод чистит все флаги ошибок в потоке, второй - удаляет из потока все символы, которые предположительно вызвали ошибку.
0
Надоела реклама? Зарегистрируйтесь и она исчезнет полностью.
raxper
Эксперт
30234 / 6612 / 1498
Регистрация: 28.12.2010
Сообщений: 21,154
Блог
25.04.2017, 00:04
Помогаю со студенческими работами здесь

Подскажите книги или другие ресурсы по пользованию методом Wndproc
Подскажите какую книгу почитать или другой ресурс по использованию метода Wndproc. Пишу свой компонент автодополнения. Сделал его при...

Способы заполнения двумерного массива
Как можно заполнить двумерный массив(два столбца) через два одномерных с типом String при условии, что эти два одномерных массива...

Как работает cin.peek, cin,get, cin.ignore, cin.clear?
Здравствуйте, товарищи и не товарищи!:) Я только начал изучать C++, а уже использую вещи, которые мне не понятны, и прошу объяснить, как...

Shell и другие способы
В хелпе по Shell написано: In other environments, after Shell starts a program, LotusScript continues to execute the script without...

использую cin.getline() для заполнения динамического массива, и шляпа
делал задачку в теме ниже, типа заменить в строке символ &quot;:&quot; на &quot;;&quot;, решил сделать при помощи динамического массива, размер которого...


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

Или воспользуйтесь поиском по форуму:
8
Ответ Создать тему
Новые блоги и статьи
SDL3 для Web (WebAssembly): Реализация движения на Box2D v3 - трение и коллизии с повёрнутыми стенами
8Observer8 20.02.2026
Содержание блога Box2D позволяет легко создать главного героя, который не проходит сквозь стены и перемещается с заданным трением о препятствия, которые можно располагать под углом, как верхнее. . .
Конвертировать закладки radiotray-ng в m3u-плейлист
damix 19.02.2026
Это можно сделать скриптом для PowerShell. Использование . \СonvertRadiotrayToM3U. ps1 <path_to_bookmarks. json> Рядом с файлом bookmarks. json появится файл bookmarks. m3u с результатом. # Check if. . .
Семь CDC на одном интерфейсе: 5 U[S]ARTов, 1 CAN и 1 SSI
Eddy_Em 18.02.2026
Постепенно допиливаю свою "многоинтерфейсную плату". Выглядит вот так: https:/ / www. cyberforum. ru/ blog_attachment. php?attachmentid=11617&stc=1&d=1771445347 Основана на STM32F303RBT6. На борту пять. . .
Камера Toupcam IUA500KMA
Eddy_Em 12.02.2026
Т. к. у всяких "хикроботов" слишком уж мелкий пиксель, для подсмотра в ESPriF они вообще плохо годятся: уже 14 величину можно рассмотреть еле-еле лишь на экспозициях под 3 секунды (а то и больше),. . .
И ясному Солнцу
zbw 12.02.2026
И ясному Солнцу, и светлой Луне. В мире покоя нет и люди не могут жить в тишине. А жить им немного лет.
«Знание-Сила»
zbw 12.02.2026
«Знание-Сила» «Время-Деньги» «Деньги -Пуля»
SDL3 для Web (WebAssembly): Подключение Box2D v3, физика и отрисовка коллайдеров
8Observer8 12.02.2026
Содержание блога Box2D - это библиотека для 2D физики для анимаций и игр. С её помощью можно определять были ли коллизии между конкретными объектами и вызывать обработчики событий столкновения. . . .
SDL3 для Web (WebAssembly): Загрузка PNG с прозрачным фоном с помощью SDL_LoadPNG (без SDL3_image)
8Observer8 11.02.2026
Содержание блога Библиотека SDL3 содержит встроенные инструменты для базовой работы с изображениями - без использования библиотеки SDL3_image. Пошагово создадим проект для загрузки изображения. . .
КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin
Copyright ©2000 - 2026, CyberForum.ru