C++ primer(第五版) 练习 3.25 个人code 和疑问
2014-07-24 11:12
253 查看
C++ primer(第五版) 练习 3.25
题目:3.3.3节划分分数段的程序是使用下标运算符实现的,请利用迭代器改写该程序并实现完全相同的功能。
3.3.3节划分分数段的程序如下:
假设有一组成绩的集合,其中成绩的取值是从0到100。以10分为一个分数段,要求统计各个分数段各有多少个成绩。显然,从0到100
总共有101种可能的成绩取值,这些成绩分布在11个分数段上:每10个分数构成一个分数段,这样的分数段有10个,额外还有一个分数
段表示满分100分。这样第一个分数段将统计成绩在0到9之间的数量;第二个分数段将统计成绩在10-19之间的数量,以此类推。最后
一个分数段统计满分100分的数量。
书上给的输入如下:
42 65 95 100 39 67 95 76 88 76 83 92 76 93
输出:
0 0 0 1 1 0 2 3 2 4 1
书上的例代码为:
vector<unsigned> scores(11,0);
unsigned grade;
while(cin>>grade)
{
if(grade<=100)
++scores[grade/10];
}
疑问:用书上的代码很方便的就统计出来了,用迭代的方法,我写了一大堆代码实现的,如下答题部分的代码
反而不如原来的简单方便,还有就是也不知道我下面的代码算不算用迭代实现相同的功能。但愿有人看到这个
给初学者解个惑。
答:
执行结果:
C++ primer(第五版) 练习 3.25
题目:3.3.3节划分分数段的程序是使用下标运算符实现的,请利用迭代器改写该程序并实现完全相同的功能。
3.3.3节划分分数段的程序如下:
假设有一组成绩的集合,其中成绩的取值是从0到100。以10分为一个分数段,要求统计各个分数段各有多少个成绩。显然,从0到100
总共有101种可能的成绩取值,这些成绩分布在11个分数段上:每10个分数构成一个分数段,这样的分数段有10个,额外还有一个分数
段表示满分100分。这样第一个分数段将统计成绩在0到9之间的数量;第二个分数段将统计成绩在10-19之间的数量,以此类推。最后
一个分数段统计满分100分的数量。
书上给的输入如下:
42 65 95 100 39 67 95 76 88 76 83 92 76 93
输出:
0 0 0 1 1 0 2 3 2 4 1
书上的例代码为:
vector<unsigned> scores(11,0);
unsigned grade;
while(cin>>grade)
{
if(grade<=100)
++scores[grade/10];
}
疑问:用书上的代码很方便的就统计出来了,用迭代的方法,我写了一大堆代码实现的,如下答题部分的代码
反而不如原来的简单方便,还有就是也不知道我下面的代码算不算用迭代实现相同的功能。但愿有人看到这个
给初学者解个惑。
答:
#include <iostream> #include <vector> using std::cin; using std::cout; using std::endl; using std::vector; int main() { vector<int> scores; vector<unsigned> cnt(11, 0); unsigned grade; while (cin >> grade) { if (grade >= 0 && grade <= 100) scores.push_back(grade); } auto b = scores.begin(), e = scores.end(); while (b!=e) { ++cnt[*b / 10]; b++; } for (auto i : cnt) cout << i << " "; cout << endl; return 0; }
执行结果:
相关文章推荐
- C++ primer 第五版 中文版 练习 9.45 个人code 及疑问
- C++ primer 第五版 中文版 练习 9.43 个人code+github上的代码
- C++ primer 第五版 中文版 练习 10.3 个人code
- C++ primer 第五版 中文版 练习 10.36 个人code
- C++ primer 第五版 中文版 练习 11.4 个人code
- C++ primer 第五版 中文版 练习 11.14 个人code
- C++ primer 第五版 中文版 练习 11.31 个人code
- C++ Primer 第五版 中文版 练习 12.26 个人code
- C++ Primer 第五版 中文版 练习 12.27 个人code
- C++ primer(第五版) 练习 3.24 个人code
- C++ primer(第五版) 练习 4.22 个人code
- C++ primer(第五版) 练习 5.11 个人code
- C++ primer(第五版) 练习 5.20 个人code
- C++ primer(第五版) 练习 6.22 个人 code
- C++ primer 第五版 中文版 练习 10.6 个人code
- C++ primer 第五版 中文版 11.3.1 节练习 个人code
- C++ Primer 第五版 中文版 练习 13.39 个人code
- C++ Primer 第五版 中文版 练习 14.3 个人code
- C++ primer(第五版) 练习 4.31 个人code 和 疑惑
- C++ primer(第五版) 练习 6.25、练习6.26 个人 code