Подстрочный вектор не может добавить элементы

После написания довольно краткого C ++ с использованием оператора sub script у меня есть небольшая ошибка в программе — нет вывода.

Я ввожу это (Linux)

54 73 89 43 38 90

затем нажмите Cntrl + D для EOF. Программа ничего не выводит и прекращает выполнение.

Источник:

#include <iostream>
#include <string>
#include <vector>

using std::cin;
using std::vector;
using std::cout;
using std::endl;

int main() {
vector<unsigned> scores(11, 0); //11 buckets, all initially 0
unsigned grade;
while(cin >> grade) //read the grades
{
if(grade <=100) //handles only valid inputs
{
++scores[grade/10]; //increment counter for the current cluster
}
}
}

Я не изменил свои настройки в VIM, поэтому стиль кодирования немного отключен. Я не могу понять, что не так, цикл while довольно стандартный. Он считывает оценки, пока не обнаружит, что поток недействителен. Затем я проверяю ввод на наличие менее 100 (включительно). Последний фрагмент кода (довольно краткий) находит правильный элемент в векторе для увеличения счетчика.

У меня такое чувство, что, возможно, именно мой вклад приводит к тому, что программа не выводит.

РЕДАКТИРОВАТЬ 1: я добавил оператор вывода, я сделал это с помощью разыменования а, который всегда является ссылкой.

#include <iostream>
#include <string>
#include <vector>

using std::cin;
using std::vector;
using std::cout;
using std::endl;

int main() {
vector<unsigned> scores(11, 0); //11 buckets, all initially 0
unsigned grade;
while(cin >> grade) //read the grades
{
if(grade <=100) //handles only valid inputs
{
++scores[grade/10]; //increment counter for the current cluster
}
}
for(auto it = scores.begin(); it != scores.end(); ++it) {
cout << *it << endl;
}
}

2

Решение

У меня такое чувство, что, возможно, именно мой вклад приводит к тому, что программа не выводит.

Не совсем. Отсутствие операторов вывода в вашей программе приводит к тому, что они не выводятся.

6

Другие решения

Других решений пока нет …

По вопросам рекламы [email protected]