注册 登录
编程论坛 C++教室

结果编译出问题。。。我不知道怎么改

hujihong520 发布于 2013-12-13 00:46, 1081 次点击
程序代码:
#include <iostream>
using namespace std;
class student
{
public:
    student(int n,string nam,float s):num(n),name(nam),score(s){}
private:
    int a[5];
    char num;
    string name;
  float score;
  void set()
  {student  a[5];
    int i,j=0,k=0;
    cout<<"请输入学生1的学号:";
    cin>>a[0].num;
    cout<<"请输入学生1的姓名:";
    cin>>a[0].name;
    cout<<"请输入学生1的成绩:";
    cin>>a[0].score;}

 int main()
{ double sun=a[0].score,max=a[0].score,min=a[0].score;
    for(i=1;i<N;i++)
    {  cout<<"请输入学生"<<i+1<<"的学号:";
       cin>>a[i].num;
       cout<<"请输入学生"<<i+1<<"的姓名:";
       cin>>a[i].name;
       cout<<"请输入学生"<<i+1<<"的成绩:";
       cin>>a[i].score;
       sum+=a[i].score;
       if(a[i].score>max)
       {
           max=a[i].score;
           j=i;
       }
       if(a[i].score<min)
       {
           min=a[i].score;
           k=i;
       }
    }
    cout<<"平均分:"<<"ave="<<sum/3<<endl;
    cout<<"最高分学号:"<<a[j].num<<"最高分姓名:"<<a[j].name<<"最高分分数:"<<a[j].score<<endl;
    cout<<"最高分学号:"<<a[k].num<<"最低分姓名:"<<a[k].name<<"最低分分数:"<<a[k].score<<endl;
    return 0;
}
20 回复
#2
pangshch2013-12-13 08:07
类没有用大括号结束
构造函数有参数, 你后面定义的对象没有参数.
#3
hujihong5202013-12-13 08:34
回复 2楼 pangshch
具体呢?怎么改
#4
yangood2013-12-13 09:12
int  main()主函数前加大括号“}”。你的构造函数赋值跑到set成员函数里了。手里没有C++编辑工具,运行结果是什么样子的?
#5
peach54602013-12-13 09:19
我都不知道你main里面的a是哪来的
还有for里面的i哪来的?N哪来的?

这是怎么拼凑出来的代码...
#6
hujihong5202013-12-13 09:26
回复 4楼 yangood
我试过不行啊
#7
hujihong5202013-12-13 12:48
程序代码:
#include <iostream>
using namespace std;
class Student
{public:
Student(int n,int a,float s):num(n),name(a),score(s){}
void total();
static float average();
private:
    int num;
    int name;
    float score;
    static float sum;
    static int count;
};
void Student::total()
{sum+=score;
count++;
}
float Student::average()
{return(sum/count);
}
float Student::sum=0;
int Student::count=0;
int main()
{Student stud[3]={
Student(0063,01,59),
Student(0064,02,99),
Student(0065,03,60)
};
int n;
cout<<"please input the number of students:";
cin>>n;
for(int i=0;i<n;i++)
stud[i].total();
cout<<"the average score of"<<n<<"students is"<<Student::average()<<endl;

int main()
{
    int i,max;
    int j[3]={59,99,60};
    max=j[0];
    for(i=0;i<=3;i++)
    if(j[i]>max)
    {max=j[i];
    }
cout<<"max="<<max<<endl;
return 0;
}

int main()
{
    int i,min;
    int j[3]={59,99,60};
    min=j[0];
    for(i=0;i<=3;i++)
    if(j[i]<min)
    {min=j[i];
    }
cout<<"min="<<min<<endl;
return 0;
}
可是出错。。不知道怎么改,帮忙。。
#8
peach54602013-12-13 13:03
回复 7楼 hujihong520
为什么两个main...
#9
hujihong5202013-12-13 13:07
回复 8楼 peach5460
程序代码:
#include <iostream>
using namespace std;
class Student
{public:
Student(int n,int a,float s):num(n),name(a),score(s){}
void total();
static float average();
private:
    int num;
    int name;
    float score;
    static float sum;
    static int count;
};
void Student::total()
{sum+=score;
count++;
}
float Student::average()
{return(sum/count);
}
float Student::sum=0;
int Student::count=0;
int main()
{Student stud[3]={
Student(0063,01,59),
Student(0064,02,99),
Student(0065,03,60)
};
int n;
for(int i=0;i<n;i++)
stud[i].total();
cout<<"the average score of"<<n<<"students is"<<Student::average()<<endl;
{    int i,max=0,min=0;
    int j[3]={59,99,60};
    max=j[0];
    for(i=0;i<=3;i++)
    if(j[i]>max)
    {max=j[i];
}cout<<"max="<<max<<endl;

 min=j[0];
    for(i=0;i<=3;i++)
    if(j[i]<min)
    {min=j[i];
}cout<<"min="<<min<<endl;
}
return 0;
}
我改过,可是平均分有问题,不知道改哪个
#10
hujihong5202013-12-13 13:09
回复 8楼 peach5460
急急急。。。拜托。。。
#11
peach54602013-12-13 13:37
回复 10楼 hujihong520
你逻辑是乱的...
而且基本语法也不懂...
就是几个代码段来回切换着拼...

急着交作业啊?
#12
yangood2013-12-13 13:55
回复 6楼 hujihong520
除了“}”外后面的“;” 你加了吗?能把运行错误结果说一下吗...
#13
yangood2013-12-13 14:07
有大神根据他的意思编译一个运行成功的给他吧,看把这孩子急的...
lz不要为完成任务  打扰了自我的思考,要知其所以然
#14
hujihong5202013-12-13 14:14
回复 12楼 yangood
在哪里加上"﹜"
#15
peach54602013-12-13 14:24
看在是个女生头像上

楼主自身代码太多错误了,语法基本全部不会用...

顺便说一句...
为了做作业而求代码,根本不去掌握自身的原理,对学编程是没有任何好处的...
下次如果再无脑求代码我就锁帖了...
要多自己想...

而且,我们大家能帮你的也只能是引导你走向正确的编程思路...
没人喜欢帮别人做没技术含量的作业...浪费时间,自身也得不到什么提高...
你再怎么急,关我什么事...对吧...
你急得大小便失禁,我也只会笑笑,说你心理素质不好...
程序代码:

#include <iostream>
#include <vector>
#include <string>

using namespace std;

class student
{
public:
    student(int n, string nam, float s) : no(n), name(nam), score(s) {}

    int no;
    char num;
    string name;
    float score;
};

    int main()
    {
        char ch;

        std::vector<student> vecStu;
        cout << "输入q结束" << endl;
        int num;
        std::string name;
        float score;
        while(ch != 'q')
        {
            cout<<"请输入学生1的学号:";
            cin>>num;
            cout<<"请输入学生1的姓名:";
            cin>>name;
            cout<<"请输入学生1的成绩:";
            cin>>score;

            student stu(num, name, score);
            vecStu.push_back(stu);
        }

        if(vecStu.size() > 0)
        {
            int max = 0, min = 0;
            float sum = 0.0f;
            for (int index = 1; index < vecStu.size(); ++index)
            {
                sum += vecStu.at(index).score;
                if(vecStu.at(index).score > vecStu.at(max).score)
                {
                    max = index;
                }
                else if(vecStu.at(index).score < vecStu.at(min).score)
                {
                    min = index;
                }
            }
            cout<<"平均分:"<<"ave="<<sum/vecStu.size()<<endl;
            cout<<"最高分学号:"<<vecStu[max].num<<"最高分姓名:"<<vecStu[max].name<<"最高分分数:"<<vecStu[max].score<<endl;
            cout<<"最低分学号:"<<vecStu[min].num<<"最低分姓名:"<<vecStu[min].name<<"最低分分数:"<<vecStu[min].score<<endl;
        }

        return 0;
    }


[ 本帖最后由 peach5460 于 2013-12-13 14:34 编辑 ]
#16
hujihong5202013-12-13 14:28
回复 11楼 peach5460
是啊…帮忙啊
#17
i802862013-12-13 14:32
用容器,代码就简短的多,只要用sort对某一项排一下序,然后输出第一项和最后一项就OK了
#18
peach54602013-12-13 14:35
以下是引用i80286在2013-12-13 14:32:29的发言:

用容器,代码就简短的多,只要用sort对某一项排一下序,然后输出第一项和最后一项就OK了

自己动手试试...

为了得个大小值,写个仿函数?
过度设计了吧...
#19
i802862013-12-13 15:24
回复 18楼 peach5460
这题只需对唯一的一个成绩选项排序,那写个内联函数是不是就可以了?
inline bool Up(student &Stu1,student &Stu2){return Stu1.score<Stu2.score;};
sort(vecStu.begin(),vecStu.end(),Up);
#20
peach54602013-12-13 16:34
回复 19楼 i80286
我知道需求很简单
我的意思是,简单的需求搞这么复杂,属于过度设计了吧...

请看清我的全文...
我没有说这个仿函数有多难写...
而是说设计过于复杂...
#21
冷读者2013-12-14 01:40
加油哦
1