西科人BBS_西安科技大学学生论坛

 找回密码
 立即注册
123
返回列表 发新帖
楼主: windyuwen

寻找C++高手

[复制链接]
发表于 2006-3-29 00:39:45 | 显示全部楼层
我再看看,,
发表于 2006-3-31 23:03:25 | 显示全部楼层
int main()
{
  vector<Student_info> students;
  Student_info record;
  string::size_type maxlen = 0;

  //读并存储所有学生的数据
  //students包含了所有学生记录
  //max包含了students中最长的姓名
  while (true)
  {
     read(cin,record)
     //找出最长的姓名的长度
     if (record.name=="teacher")
     {
        break;
     }
     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)
     {
        //输出姓名,把姓名填充至maxlen+1个字符的长度
        cout<<setw(maxlen+1)<<students.name;

        //计算并输出成绩
        try
        {
          double final_grade = grade(students);
          streamsize prec = cout.precision();
          cout<<setprecision(3)<<final_grade
             <<setprecision(prec);
        }
        catch (domain_error e)
        {
          cout<<e.what();
        }
        cout<<endl;
     }
     return 0;
}
发表于 2006-3-31 23:08:00 | 显示全部楼层
istream& read_hw(istream& in,vector<double>& hw)
{
   //in.clear();。
   if(in)
   {
      //清除原先的内容
      hw.clear();

      cout<<"Please enter your homework grades:"<<endl;
      //读家庭作业成绩
      double x=0;
      while(true)
      {
        in>>x;
        if(x==-1)break;
        hw.push_back(x);


      }


      //清除流以使输入动作对下一个学生有效
      //in.clear();这块还是要注释掉,否则合法输入就无法推出了
   }
   return in;
}
发表于 2006-3-31 23:08:56 | 显示全部楼层
这样输入输出流就不会有什么问题了。其他的。。。自行解决之。
发表于 2006-4-1 00:36:09 | 显示全部楼层
说起来,输入输出流就只能做到这步了,如果要面对所有的非法输入都能退出,。。恐怕只有考虑try catch语句了。
发表于 2006-4-1 12:31:21 | 显示全部楼层
double x=0;
     while(true)
    {
      in>>x;
      if (x==-1||!in.good())
      {
        break;
       }
        hw.push_back(x);
      //清除流以使输入动作对下一个学生有效
     }


或者这样试一下也可以。
[s:36] 行了,这个问题到这里就该结束了。
 楼主| 发表于 2006-4-5 22:18:55 | 显示全部楼层
谢谢大家的解答。
发表于 2013-8-19 04:13:20 | 显示全部楼层
楼主呀,,,您太有才了。。。
回复 支持 反对

使用道具 举报

您需要登录后才可以回帖 登录 | 立即注册

本版积分规则

QQ|小黑屋|手机版|Archiver|西科人BBS ( 粤ICP备20049523号-3 )

GMT+8, 2026-3-23 17:05 , Processed in 0.045463 second(s), 15 queries .

Powered by Discuz! X3.4

Copyright © 2001-2021, Tencent Cloud.

快速回复 返回顶部 返回列表