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

高手帮我下(关于对象数组)

冬天的一条鱼 发布于 2009-11-02 12:17, 567 次点击
建立一个对象数组,内存放5个学生数据(学号,成绩),用指针指向数组首元素,调用成员函数Print,输出所有学生信息。在此基础,定义函数指针ftr指向成员函数print,调用函数指针ftr输出所有学生信息,再设立一个函数max,用指向对象指针作函数参数,在max函数中找出5个学生成绩最高者,并输出其学生所有信息。  


下面是我自己编的点,但定义指针ftr指向后面的就不会了,希望高手帮我解决哈。



#include<iostream.h>
class Students
{
public:
Students(int num,int sco):number(num),score(sco){}
int print();
private:
int number;
int score;
};
int Students::print()
{
cout<<"学号:"<<number<<"    分数为"<<score<<endl;
}
int main()
{
    int i;
Students a[5]={
Students(1,91),Students(2,97) ,Students(3,92) ,
Students(4,93) ,Students(5,98)};
for(i=0;i<5;i++)
a[i].print();
}
2 回复
#2
qlc002009-11-02 12:36
#include <iostream>
#include <string>
using namespace std;
class Student
{
public:
    Student(string n,int no ,int a,float s)
    {
        name=n;
        number=no;
        age=a;
        score=s;
    }
    Student()
    {
        name="null";
        number=0;
        age=0;
        score=0.0;
    }

    ~Student();
   
    void input()
    {
        cout<<"\n 输入姓名:";
        cin>>name;
        cout<<"\n 输入号码:";
        cin>>number;
        cout<<"\n 输入年龄:";
        cin>>age;
        cout<<"\n 输入分数:";
        cin>>score;
    }
    void output()
    {
        cout<<"姓名:"<<name<<endl;
        cout<<"号码:"<<number<<endl;
        cout<<"年龄:"<<age<<endl;
        cout<<"分数:"<<score<<endl;
    }
    string get_name()
    {
        return name;
    }
    int get_number()
    {
        return number;
    }
    int get_age()
    {
        return age;
    }
    void change(Student k)
    {
        name=k.get_name();
        number=k.get_number();
        age=k.get_age();
        score=k.get_score();
    }
    float get_score()
    {
        return score;
    }
private:
    string  name;
    int number;
    int age;
    float score;
};
Student::~Student()
{
        cout<<"调用虚构函数。"<<endl;
}

int main()
{
    Student stu[5];
    Student temp;
    for(int i=0;i<5;i++)
    {
        cout<<"请输入第"<<i+1<<"个学生的信息"<<endl;
        stu[i].input();
        cout<<endl;
    }
    for(i=0;i<5;i++)
    {
        stu[i].output();
        cout<<endl;
    }
    for(i=0;i<4;i++)
        for(int j=i+1;j<5;j++)
    {
        if(stu[i].get_score()>stu[j].get_score())
        {   
            temp.change(stu[i]);
            stu[i].change(stu[j]);
            stu[j].change(temp);
        }
    }
    for(i=0;i<5;i++)
    {
        stu[i].output();
        cout<<endl;
    }

    return 0;
}
给你一个参考,自己多编下
#3
冬天的一条鱼2009-11-02 20:43
谢谢你哦。我会努力的。
1