关于accelerted c++ 课后题7-1的一些疑问

xiaoZhang888 2009-03-07 11:51:44
题目是输入一些学生的姓名和成绩,建立数据库。然后按照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,程序就不能运行了,请大家帮我看一下~~~谢了先~
...全文
73 3 打赏 收藏 转发到动态 举报
写回复
用AI写文章
3 条回复
切换为时间正序
请发表友善的回复…
发表回复
xiaoZhang888 2009-03-07
  • 打赏
  • 举报
回复
谢了各位~~唉……惭愧
old-six-programmer 2009-03-07
  • 打赏
  • 举报
回复
if换成while?
if是条件判断,while是条件判断加循环
  • 打赏
  • 举报
回复
将那5个if换成while,程序就不能运行了,请大家帮我看一下~~~谢了先~
晕,难道你搞不清if跟while的区别?
你改成while,如果没有在while体里改变其判断条件,那会是死循环.
代码下载地址: https://pan.quark.cn/s/f772f44531a5 FFmpeg 是一款功能丰富的开源命令行软件,能够对多种类型的多媒体数据,涵盖音频及视频内容,进行操作。它具备多种能力,例如进行格式转换、合并不同媒体、分割文件、执行编码与解码处理、以及实现流媒体传输等。在此特定情境下,主要探讨如何运用 FFmpeg 来处理 MP4 文件的播放难,特别是那些无法通过流式传输正常播放的文件。MP4 文件播放时可能遇到的障碍,可能是由播放器不兼容的编码方式、容器结构错误、元数据位置设置不当,或是缺少必要的流信息所导致。FFmpeg 能够协助我们识别并修正这些问。 1. **针对 MP4 文件的检测与修复**:借助 FFmpeg 的 `-i` 参数,可以获取 MP4 文件的详细资料,例如: ``` ffmpeg -i problematic.mp4 ``` 若发现编码方式、时间轴或容器结构存在问,可尝试对文件进行重新封装(remuxing)或重新编码(transcoding)。例如,通过简单的重新封装操作: ``` ffmpeg -i problematic.mp4 -c copy fixed.mp4 ``` 此指令将维持视频和音频流的原状,仅更换文件的容器格式。 2. **应对流传输挑战**:当文件无法以流方式播放时,通常是因为流信息未正确嵌入文件头部。FFmpeg 可用于解决该问: ``` ffmpeg -i problematic.mp4 -movflags +faststart output.mp4 ``` ...

65,211

社区成员

发帖
与我相关
我的任务
社区描述
C++ 语言相关问题讨论,技术干货分享,前沿动态等
c++ 技术论坛(原bbs)
社区管理员
  • C++ 语言社区
  • encoderlee
  • paschen
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告
  1. 请不要发布与C++技术无关的贴子
  2. 请不要发布与技术无关的招聘、广告的帖子
  3. 请尽可能的描述清楚你的问题,如果涉及到代码请尽可能的格式化一下

试试用AI创作助手写篇文章吧