2 / 2 / 0
Регистрация: 12.12.2017
Сообщений: 33
1

Ошибка при окончании ввода чисел в вектор

03.01.2018, 15:06. Показов 1496. Ответов 5

Author24 — интернет-сервис помощи студентам
Задача:Напишите программу. считывающую и сохраняюшую ряд целочисленных
значений, а затем вычисляющую сумму первых N чисел. Запросите
значение N. считайте значения в vector и вычислите сумму
первых N значений. Н апример:
Введите копичество суммируемых значений :
3
Введите нескопько це.пых чисеп ( 1 дпя окончания ввода) :
12 23 13 24 15

Сумма первых 3 чисеп ( 12 23 1 3 ) равна 48 .
Обрабатывайте любые входные данные. Например, если пользователю
требуется просуммировать чисел больше, чем сохранено в векторе,
выводите соответствующее сообщение.


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
33
34
35
36
37
38
#include <iostream>
#include <vector>
using namespace std;
 
int main()
{
    setlocale(LC_ALL, "rus");
    vector<int>numbers;
    int number, n;
    char stop = '|';
    cout << "Введите количество суммируемых значений\n";
    cin >> n;
    cout << "Введите несколько целых чисел\n";
    for (int i = 0; cin >> number;) {
        numbers.push_back(number);
    }
 
    for (int i : numbers) {
        cout << numbers[i] << endl;
    }
 
    cout << "Сумма " << n << "значений\n";
    int j = 0;
    int sum = 0;
    int iteration = 0;
    if (n > numbers.size()) {
        cerr << "Ошибка, выход за предел массива\n";
    }
    else if (n < numbers.size()) {
        for (int i = 0; i < numbers.size(); ++i) {
            iteration = i - (i - n + j);
            j++;
            sum += numbers[iteration];
        }
    }
    system("pause");
    return 0;
}
Ошибка:
Данная ошибка выходит при окончании ввода чисел в вектор
C++
1
2
3
for (int i = 0; cin >> number;) {
        numbers.push_back(number);
    }
Ошибка при окончании ввода чисел в вектор


Пробовал заканчивать символом | как указано в условии, выходит та же ошибка. В данном коде заканчиваю ввод комбинацией CTRL+Z.
0
Programming
Эксперт
94731 / 64177 / 26122
Регистрация: 12.04.2006
Сообщений: 116,782
03.01.2018, 15:06
Ответы с готовыми решениями:

Как считать массив строк из стандартного ввода, если нет никакого сигнала об окончании ввода
Добрый день, сейчас изучаю язык C и попалась такая задача: Задача об отображении темы письма...

Вычисление поля по окончании ввода
Вопрос таковой, есть 2 поля Количество и Розничная цена, как сделать так, чтобы окончании ввода в...

Как сделать проверку Edit по окончании ввода числа?
Есть кодvoid __fastcall TForm2::Edit1Change(TObject *Sender) { if(Edit1-&gt;Text&gt;Edit7-&gt;Text)...

Функция для ввода данных о начале и окончании парковки: найти ошибку
# include &lt;windows.h&gt; # include &lt;stdio.h&gt; # include &lt;locale.h&gt; //функция для ввода данных о...

5
93 / 91 / 62
Регистрация: 23.11.2013
Сообщений: 242
03.01.2018, 15:56 2
Ошибка не в воде, а в выводе, в 18 строке у вас range-based for, а не обычный for. Замените 19 строку на
C++
1
cout << i << endl;
0
1718 / 567 / 187
Регистрация: 12.03.2016
Сообщений: 2,169
03.01.2018, 15:58 3
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>
#include <numeric>
 
int main()
 
{
    setlocale(0, "");
    std::vector <int> numbers;
    int number, n;
    std::cout << "Введите количество суммируемых значений\n";
    std::cin >> n;
    std::cout << "Введите несколько целых чисел\n";
 
    for (; std::cin >> number && number != 1; )
        numbers.push_back(number);
 
    for (const auto & el : numbers) 
        std::cout << el << "   ";
 
    if (size(numbers) >= n)
        std::cout << " \n Сумма первых n чисел = " << std::accumulate(begin(numbers), begin(numbers) + n, 0) << std::endl;
    else
        std::cout << " \n Слишком маленький вектор " << std::endl;
 
    system("pause");
}
0
139 / 67 / 46
Регистрация: 15.10.2015
Сообщений: 308
03.01.2018, 15:59 4
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
33
34
35
36
37
38
39
40
41
42
43
44
45
int main()
{
    setlocale(LC_ALL, "rus");
 
    vector<int>numbers;
    int number = 0;
    int n = 0;
 
    cout << "Введите количество суммируемых значений\n";
    cin >> n;
    cout << "Введите несколько целых чисел(Q - Для завершения)\n";
 
    while (cin >> number)
    {
        numbers.push_back(number);
    }
    
    for (size_t i = 0; i < numbers.size(); i++)
    {
        cout << numbers[i] << endl;
    }
 
    cout << "Сумма " << n << " значений = ";
 
    int sum = 0;
 
    if (n > numbers.size()) 
    {
        cerr << "Ошибка, выход за предел массива\n";
    }
    else 
    if (n <= numbers.size()) 
    {
        for (int i = 0; i < n; ++i) 
        {
            sum += numbers[i];
        }
 
        cout << sum;
        cout << endl;
    }
 
    system("pause");
    return 0;
}
0
1718 / 567 / 187
Регистрация: 12.03.2016
Сообщений: 2,169
03.01.2018, 16:02 5
Reavolt,
Цитата Сообщение от Canavar Посмотреть сообщение
( 1 дпя окончания ввода) :
0
139 / 67 / 46
Регистрация: 15.10.2015
Сообщений: 308
03.01.2018, 16:12 6
мановар, Ох, да. Проглядел.
C++
1
2
3
4
while ((cin >> number) && (number != 1))
{
    numbers.push_back(number);
}
0
03.01.2018, 16:12
IT_Exp
Эксперт
87844 / 49110 / 22898
Регистрация: 17.06.2006
Сообщений: 92,604
03.01.2018, 16:12
Помогаю со студенческими работами здесь

Исключение IOException, которое появляется при ввода буквенного символа в методе ввода с клавиатуры целых чисел
Ввожу в catch IOException, а не нравится, что делать? import java.io.IOException; import...

Из ввода дана непустая последовательность из “n” вещественных чисел (n задается из ввода), за которой следует 0. Определить количество чисел
13. Из ввода дана непустая последовательность из “n” вещественных чисел (n задается из ввода), за...

Поиск файлов при изменяющемся окончании
Добрый день! Подскажите пожалуйста. у меня макрос в екселе открывает ексель файлы. они в...

обновление вкладки при окончании прокрутки
Добрый день! собственно, сабж.... т.е. при окончании прокрутки вверх или вниз мне нужно...


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

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

КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin
Copyright ©2000 - 2024, CyberForum.ru