关于accelerted c++ 课后题7-1的一些疑问
题目是输入一些学生的姓名和成绩,建立数据库。然后按照A(90~100) B(80~89.99) C(70~79.99) D(60~69.99) F(<60) 这样的分数来划分为5档。
要求,输出每个档有多少学生
我的主程序如下
int main()
{
vector<Student_info> students;
Student_info record;
string::size_type maxlen = 0;
map<string, int> container;
string grade_class;
while(read(cin, record))
{
maxlen = max(maxlen, record.name.size());
students.push_back(record);
}
sort(students.begin(), students.end(), compare);
for(vector<Student_info>::size_type i = 0;
i != students.size(); ++i)
{
/*cout << students[i].name << string(maxlen + 1 - students[i].name.size(), ' ');
try
{
double final_grade = grade(students[i]);
streamsize prec = cout.precision();
cout << setprecision(3) << final_grade << setprecision(prec) << endl;
}catch(domain_error e){
cout << e.what();
}*/
double final_grade = grade(students[i]);
if( 90< final_grade && final_grade <100)
{
grade_class = "A";
++container[grade_class];
}
if( 80 < final_grade && final_grade < 89.99 )
{
grade_class = "B";
++container[grade_class];
}
if( 70 < final_grade && final_grade < 79.99 )
{
grade_class = "C";
++container[grade_class];
}
if( 60 < final_grade && final_grade < 69.99 )
{
grade_class = "D";
++container[grade_class];
}
if( 60 < final_grade )
{
grade_class = "F";
++container[grade_class];
}
}
for(map<string, int>::iterator it = container.begin();
it!= container.end(); ++it)
{
cout << it-> first << '\t' << it->second << endl;
}
return 0;
}
其中牵涉到的函数都是书中的,而且也编译通过。这段程序也是正确的,但不知道为什么,将那5个if换成while,程序就不能运行了,请大家帮我看一下~~~谢了先~