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

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

Войти
Регистрация
Восстановить пароль
 
nsashans
7 / 7 / 0
Регистрация: 16.07.2012
Сообщений: 56
#1

Пролетает cin >> - C++

01.08.2012, 18:45. Просмотров 456. Ответов 4
Метки нет (Все метки)

Нужно заполнять вектор пока не введено 'x', потом сложить количество (введенное) первых элементов.
После 'x' программа сразу завершается!!! . И еще вопрос как фильтровать ввод 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
26
27
#include <iostream>
#include <vector>
using namespace std;
 
int main()
{
    vector<double> stream;
    double n, sum;
    int count;
    
    sum = 0;
    while (cin >> n)
    {
        if (n == 'x') break;
        stream.push_back(n);
    }
    cout << "Сколько сложить:\n";
    cin >> count;  // не считавает, пролетает
    
    if (count > stream.size()) return 1;
    
    for (int i=0; i<count; i++)
        sum += stream[i];
        
    cout << "Sum=" << sum << endl;
    return 0;
}
0
Надоела реклама? Зарегистрируйтесь и она исчезнет полностью.
Similar
Эксперт
41792 / 34177 / 6122
Регистрация: 12.04.2006
Сообщений: 57,940
01.08.2012, 18:45
Здравствуйте! Я подобрал для вас темы с ответами на вопрос Пролетает cin >> (C++):

Пролетает cin, после того как goto возвращается в начало программы - C++
Мне нужно сделать программу, которая будет исключать варианты ввода не целых чисел. Если вводить целое, то все работает нормально, а если...

Защита от дурака при вводе текста с помощью: cin.get cin.clear cin.sync - C++
Доброго времени суток. На С++ учусь с недавних пор. Имеется стандартная &quot;защита от дурака&quot; на ввод. Не пойму предназначение cin.get() !=...

Объясните пожалуйста как работают cin.good(), cin.sync(), cin.clear() - C++
Такая проблема: сдаю в вуза лабораторные по программированию, писал все сам, до этого c++ не изучал, поэтому возникали некоторые проблемы....

пролетает gets в теле switch - C++
не хочет запрашивать ввод строки, как будто строки gets(s); нету while (v != 1 &amp;&amp; v != 2) { cin &gt;&gt; v; switch(v) { ...

Метод getline(cin, m) не срабатывает без cin.ignore() / Ревью кода - C++
Почему в моем случае getline(cin, m) не срабатывает без cin.ignore() ? Если по коду есть какие-нибудь замечания, то просьба написать что не...

Продемонстрировать различие между вводом с помощью cin.Get и cin.Getline с тремя параметрами - C++
Нужна помощь. Задача продемонстрировать различие между вводом с помощью cin.get и cin.getline с тремя параметрами, как из потока достать...

4
b_kasenov47
14 / 14 / 1
Регистрация: 28.07.2012
Сообщений: 57
01.08.2012, 18:49 #2
system("pause");
перед return
0
Catstail
Модератор
22740 / 11109 / 1797
Регистрация: 12.02.2012
Сообщений: 18,308
01.08.2012, 18:53 #3
Цитата Сообщение от nsashans Посмотреть сообщение
if (n == 'x') break;
- это сравнение переменной "double" с char-ом? Работает?
0
nsashans
7 / 7 / 0
Регистрация: 16.07.2012
Сообщений: 56
01.08.2012, 18:54  [ТС] #4
Цитата Сообщение от b_kasenov47 Посмотреть сообщение
system("pause");
перед return
Linux



Цитата Сообщение от Catstail Посмотреть сообщение
- это сравнение переменной "double" с char-ом? Работает?
нет, при любом вводе что не число - > завершение
0
Vourhey
Почетный модератор
6485 / 2259 / 123
Регистрация: 29.07.2006
Сообщений: 12,635
01.08.2012, 19:11 #5
Цитата Сообщение от nsashans Посмотреть сообщение
n == 'x'
n у тебя double. До проверки этого условия у тебя дело даже не дойдет.
Цитата Сообщение от nsashans Посмотреть сообщение
нет, при любом вводе что не число - > завершение
А что ты ожидаешь, когда у тебя в cin детектируется ошибка конвертации вводимого значения?

Добавлено через 2 минуты
Цитата Сообщение от nsashans Посмотреть сообщение
нет, при любом вводе что не число - > завершение
C++
1
2
3
4
5
6
7
8
9
10
    while (cin >> n)
    {
        if (n == 'x') break;
        stream.push_back(n);
    }
    if(cin.fail())
    {
        cin.clear();
        cin.ignore(256,'\n');
    }
Добавлено через 5 минут
Да, еще убери проверку на 'x', она не нужна.
1
01.08.2012, 19:11
MoreAnswers
Эксперт
37091 / 29110 / 5898
Регистрация: 17.06.2006
Сообщений: 43,301
01.08.2012, 19:11
Привет! Вот еще темы с ответами:

Для чего в код вводится cin.ignore после того, как cin>> уже сработало? - C++
Доброго времени суток! Просматриваю простой код. Вводится строка типа string: фунты и дюймы Затем значения переводится в типы int и...

Задача вычисляющая расстояние которое пролетает камень. - C++
Помогите разработать программу, вычисляющую расстояние, которое пролетит тело вдоль горизонтальной оси, брошенное в вакууме под углом α к...

Объект cin и его метод cin.get() - C++
Вот код программы: #include &lt;iostream.h&gt; #pragma hdrstop ...

Отличие функции cin.get и cin.getline - C++
Добрый день! Изучаю функции get и getline, сказано, что они отличаются тем, что функция get считывает символ разрыва строк и оставляет...


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

Или воспользуйтесь поиском по форуму:
5
Ответ Создать тему
Опции темы

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