После написания довольно краткого 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;
}
}
У меня такое чувство, что, возможно, именно мой вклад приводит к тому, что программа не выводит.
Не совсем. Отсутствие операторов вывода в вашей программе приводит к тому, что они не выводятся.
Других решений пока нет …