首页 诗词 字典 板报 句子 名言 友答 励志 学校 网站地图
当前位置: 首页 > 教程频道 > 开发语言 > C++ >

这个程序有有关问题

2012-03-24 
这个程序有问题我在学习C++的时候(用的Acceleratedc++)遇到一个问题,下面这个程序无法通过编译,我感觉语法

这个程序有问题
我在学习C++的时候(用的Accelerated   c++)遇到一个问题,下面这个程序无法通过编译,我感觉语法上没什么问题.主要是编译器的报错让我无法理解,它说出错的源代码是:///////////     template <typename   _RandomAccessIterator>
        void
        __final_insertion_sort(_RandomAccessIterator   __first,
      _RandomAccessIterator   __last)
        {
            if   (__last   -   __first   >   _S_threshold)
{
    std::__insertion_sort(__first,   __first   +   _S_threshold);
    std::__unguarded_insertion_sort(__first   +   _S_threshold,   __last);
}
            else
std::__insertion_sort(__first,   __last);
        }         ////////////////////

这一段根本就不是我写的.它自己库中的.(我不太清楚是不是库里的)
我用的是Dev-C++的编译器.
请各位师兄帮我看看是什么问题.谢谢.
以下是那个程序的源代码:
大体上是对学生的成绩进行计算和统计.  
#include <iostream>
#include <vector>
#include <string>
#include <algorithm>

using   std::cin;
using   std::cout;
using   std::vector;
using   std::endl;
using   std::string;
using   std::sort;

int   n,   m,   i,   j;

struct   Student_info
{
              string   name;
              double   midterm,   final;
              vector <double>   homework;
};
struct   Student_ans
{
              string   name;
              double   grade;
};

bool   compare(   const   Student_ans&   x,   const   Student_ans&   y   )
{
          return   x.name   <   y.name;
}

void   account(   const   Student_info&   students,   Student_ans&   results   )
{
            sort(   students.homework.begin(),   students.homework.end()   );
            if(   n   %   2   ==   0   )
                  {
                            results.grade   =   students.midterm   *   0.3   +   students.final   *   0.3   +   (   students.homework[n/2]   +   students.homework[n/2   +1])   *0.4;          
                  }
                  else
                  {
                          results.grade   =   students.midterm   *0.3   +   students.final   *   0.3   +   students.homework[n/2   +   1]   *   0.4;
                  }
                  results.name   =   students.name;
}
             


int   main()


{
        int   k;
        vector <Student_info>   students;
        vector <Student_ans>   results;
        vector <Student_ans>   failures;
        //输入
        cout   < <   "请输入家庭作业的次数:   "   < <   endl;
        cin   > >   n;
        cout   < <   "请输入学生的人数:   "   < <   endl;
        cin   > >   m;  
        for(   i   =   0;   i   <   m;   i++   )
        {
                  cout   < <   "请输入学生姓名:   "   < <   endl;
                  cin   > >   students[i].name;
                  cout   < <   "请输入期中考试成绩: "   < <   endl;
                  cin   > >   students[i].midterm;
                  cout   < <   "请输入期末考试成绩: "   < <   endl;
                  cin   > >   students[i].final;
                  cout   < <   "请输入每次的家庭作业成绩: "   < <   endl;
                  for(   j   =   0;   j   <   n;   j++   )
                  {
                            cout   < <   "请输入第 "   < <   j+1   < <   "次家庭作业的成绩 "   < <   endl;
                            cin   > >   students[i].homework[j];  
                  }
        }
        //计算  
        for(   i   =   0;   i   <   m;   i++   )
        {
                  account(   students[i],   results[i]   );
        }
        //排序
        sort(   results.begin(),   results.end(),   compare   );
       
        //抽取不及格的人的成绩
        j   =   0;
        for(   i   =   0;   i   <   m;   i++   )
        {
                  if(   results[i].grade   <   60   )
                  {
                          failures[j].grade   =   results[i].grade;
                          failures[j].name   =   results[i].name;


                          j++;
                  }
        }
        n   =   j;
        //打印输出
        cout   < <   "打印全部学生的成绩请按   1   "   < <   endl;
        cout   < <   "打印不及格学生的成绩按   2   "   < <   endl;
        cin   > >   k;
        if(   k   ==   1   )
        {
                for(   i   =   0;   i   <   m;   i++   )
                {
                          cout   < <   results[i].name   < <   "                 "   < <   results[i].grade   < <   endl;
                }
                cout   < <   "Done   ! ";
        }
        else   if(   k   ==   2   )
        {
                  for(   i   =   0;   i   <   n;   i++   )
                  {
                            cout   < <   failures[i].name   < <   "             "   < <   failures[i].grade   < <   endl;
                  }
                  cout   < <   "Done   ! ";
        }
        else
        {
                cout   < <   "无效输入,请重新输入。 "   < <   endl;
        }
}

[解决办法]
sort( students.homework.begin(), students.homework.end() );
不正确
[解决办法]
恩,少个参数
[解决办法]
void account( const Student_info& students, Student_ans& results )
{
sort( students.homework.begin(), students.homework.end() );
.....
-------------------------------------------------------
students是const 的,要想sort,要去掉const

热点排行