两个不同的类要这样才能交流??
两个不同的类要这样才能交流??我想写一个程序:在计算学生的分数时记录下最高分的学生和他的指导老师,并且给指导老师加2000元奖金,同时计算出老师的总工资(含奖金)后输出最高工资的老师名字和工资。还要输出学生的学号和名字。
这是我的代码,我把学生和老师分成两个不同的类,但我不知道他们应该如何交流,老师的名字是个字符,我想把这个字符的地址传过去,可是没有用,麻烦那位帮我修改一下程序,谢谢了。
程序代码:
#include<iostream>
#include<iomanip>
using namespace std;
const int N=6;
int i;
struct stu
{
char name[10];
int wage ;
int floatingwages;
int bonus;
int totalwages;//定义结构体包含老师工资的各部分。
}p[6]={{"贾宇",2300,1980,2000},{"张莹",1908,2000,1000},{"李蒙",2490,1080,980},{"王同辽",980,1200,680},{"叶库伦",1290,1800,390},{"0",0,0,0}},a,n,*w=p;
class student
{
public:
student(int n,float s);
void display();
private:
int num;
float score;
char teacher[20];
};//定义学生的类
class teacher
{
public:
teacher( stu n);
void all(struct stu *p);
void order(struct stu *p);
void output(struct stu *p);
private:
stu a;
};//定义老师的类
student::student(int n,float s)
{
num=n;
score=s;
}
void student::display()
{
cout<<num<<" "<<score<<endl;
}
teacher::teacher(stu n)
{
a=n;//工资初始化
}
void teacher::all( stu *p)
{
for(i=0;i<=5;i++)
p[i].totalwages=p[i].wage+p[i].floatingwages+p[i].bonus;//求总工资
}
void teacher::order( stu *p)
{
*(p+5)=*p;
for(i=1;i<5;i++)
if((p+i)->totalwages>(p+5)->totalwages)
{
*(p+5)=*(p+i);//找出工资最多的老师
}
}
void teacher::output( stu *p)
{
cout<<p[5].name<<setw(5)<<p[5].totalwages<<endl;
}
void main()
{
teacher tea[N]={teacher(p[0]),teacher(p[1]),teacher(p[2]),teacher(p[3]),teacher(p[4]),teacher(p[5])};
teacher*q=tea;
for(i=0;i<N;q++,i++,w++)
q->all(w);
w=p;
q=tea;//指针返回原点
q->order(w);
q->output(w);
student stud[5]={student(1,78.5),student(2,85.5),student(3,98.5),student(4,100),student(5,95.5)};
student*p=stud;
for(int i=0;i<5;p=p++,i++)
p->display();
}