#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);
}