2

在使用子脚本运算符编写了一些非常简洁的 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;
 }
}
4

1 回答 1

6

我有一种感觉,可能是我的输入导致程序无法输出。

不完全的。程序中没有输出语句导致它不输出。

于 2013-01-05T11:48:26.247 回答