C Primer 5th Edition упражнение 3.20 Добавление элементов в вектор

#c #vector

#c #вектор

Вопрос:

Я только начал изучать C с C-Prime 5th Edition. И в задаче 3.20 «Считайте набор целых чисел в вектор. Выведите сумму каждой пары смежных элементов». Я заканчиваю код, как показано ниже, но мой терминал не выполняет итоговый код. Я все еще не могу понять, есть ли проблема с моим VSCode или мой код где-то ошибочен и переполняется. Когда я тестировал вывод чего-либо всякий раз, когда работает push_back, и с этим нет проблем, сообщения об ошибке нет, код просто останавливается после добавления элементов в вектор, я думаю.

 #include <iostream>
using namespace std;
#include <string>
#include <vector>


int main()
{
    vector<int> a;
    int b;
    while(cin >> b)
    {
        a.push_back(b);
    }
    for (decltype(a.size())c = 0; c < (a.size() - 1);   c)
    {
        auto d = a[c]   a [c 1];
        cout << "sum of " <<a[c]<<" and "<<a[c 1]<<" is: "<<d<<endl;
        d = 0;
    }
    system("pause");
    return 0;
    
}     
  

ввод: 1 2 3 4 5
затем код останавливается.
Заранее благодарю вас.

Комментарии:

1. Как вы сигнализируете, что не хотите вводить больше чисел? Обратите внимание, что нажатия enter недостаточно. Программа будет продолжать ожидать ввода.

2. Секретное оружие программиста в отладчике. С помощью отладчика вы можете запускать программу построчно и смотреть, что происходит по мере ее выполнения. Когда вы видите, что программа делает что-то, чего вы не ожидали, вы обычно обнаруживаете ошибку.

3. @cigien большое вам спасибо, я установил 0 в качестве точки останова while, и код сработал отлично.

Ответ №1:

Вам нужен способ остановить программу. Программа не знает, сколько чисел вы хотите ввести. Возможно, напишите цикл for, который повторяется всего 5 раз, чтобы вы получили 5 таких входных данных:

 int b;
for (int i = 0; i < 5;   i)
{
    cin >> b;
    a.push_back(b);
}