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

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

Восстановить пароль Регистрация
 
nsashans
7 / 7 / 0
Регистрация: 16.07.2012
Сообщений: 56
01.08.2012, 18:45     Пролетает cin >> #1
Нужно заполнять вектор пока не введено '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;
}
Similar
Эксперт
41792 / 34177 / 6122
Регистрация: 12.04.2006
Сообщений: 57,940
01.08.2012, 18:45     Пролетает cin >>
Посмотрите здесь:

C++ Задача вычисляющая расстояние которое пролетает камень.
cin.get() C++
a=get.cin() и get.cin(a) C++
C++ cin
cin C++
Cin.get C++
C++ cin и \n
cin.get() C++
C++ пролетает gets в теле switch
Cin.get() C++
C++ While(cin)
Пролетает cin, после того как goto возвращается в начало программы C++

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

Или воспользуйтесь поиском по форуму:
После регистрации реклама в сообщениях будет скрыта и будут доступны все возможности форума.
b_kasenov47
14 / 14 / 1
Регистрация: 28.07.2012
Сообщений: 57
01.08.2012, 18:49     Пролетает cin >> #2
system("pause");
перед return
Catstail
Модератор
 Аватар для Catstail
21664 / 10390 / 1687
Регистрация: 12.02.2012
Сообщений: 17,327
01.08.2012, 18:53     Пролетает cin >> #3
Цитата Сообщение от nsashans Посмотреть сообщение
if (n == 'x') break;
- это сравнение переменной "double" с char-ом? Работает?
nsashans
7 / 7 / 0
Регистрация: 16.07.2012
Сообщений: 56
01.08.2012, 18:54  [ТС]     Пролетает cin >> #4
Цитата Сообщение от b_kasenov47 Посмотреть сообщение
system("pause");
перед return
Linux



Цитата Сообщение от Catstail Посмотреть сообщение
- это сравнение переменной "double" с char-ом? Работает?
нет, при любом вводе что не число - > завершение
Vourhey
Почетный модератор
6470 / 2245 / 123
Регистрация: 29.07.2006
Сообщений: 12,635
01.08.2012, 19:11     Пролетает cin >> #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', она не нужна.
Yandex
Объявления
01.08.2012, 19:11     Пролетает cin >>
Ответ Создать тему
Опции темы

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