在使用子脚本运算符编写了一些非常简洁的 C++ 之后,我在程序中有一个小错误 - 没有输出。
我输入这个(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:我添加了输出语句,我通过取消引用 a 来做到这一点,它始终是一个引用。
#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;
}
}