两个不同的类要这样才能交流??
我想写一个程序:在计算学生的分数时记录下最高分的学生和他的指导老师,并且给指导老师加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(); }