Raimir
Newbie | Редактировать | Профиль | Сообщение | Цитировать | Сообщить модератору Товарищи прграммеры помогите новенькому ПЛИЗ!!!!Лето...зачеты... Итак проблема в том что я не могу эту прогу раскидать по файлам..то есть именно функцию GetEXAM(TObject *p,int exm).count как видите я объявил глобально шоб и для main было видно но когда отделяю функцию в Function.h то одни траблы..где я только не пробовал этот count ставить - ниче. extern и volatile тоже не помогают..объясните пожалуйста чайнику че тут не так то есть куда и с чем присунуть этот count??? вот исходник: #include <iostream.h> #include <string.h> #include <typeinfo> int count = 0; int c=0; class TObject { public: virtual void Show() = 0; }; struct Titem { TObject *Item; Titem *next; }; class TGroup : public TObject { protected : Titem *tp; char *sname; public: TGroup (char *snm); TGroup (TGroup&); virtual ~TGroup(); virtual void Show () = 0; char* GetName(); void SetName(char *snm); void Insert (TObject* obj); }; TGroup :: TGroup (char *snm){ tp =0; sname = new (char[30]); strcpy (sname,snm); } TGroup :: ~TGroup () {free(tp);} char* TGroup :: GetName () {cout<<sname<<endl;} void TGroup :: SetName (char* snm) {strcpy (sname,snm);} void TGroup :: Insert (TObject* obj) { Titem *p; if (tp == 0) { tp = new(Titem); tp->next=0; tp->Item = obj; } else { p = new(Titem); p = tp; while (p->next!=0) p=p->next; p->next=new(Titem); p=p->next; p->Item=obj; p->next=0; } } typedef void (*PF)(TObject* ,int); class Student : public TGroup{ protected : int exam; public: Student(char* snm,int exam); Student(Student &ST); virtual ~Student(); void Show(); int GetExam(); void SetExam(int ex); void ITERAT (PF action,int ex); }; Student :: Student (char* snm,int ex) : TGroup(snm) { exam = ex;} Student :: ~Student () {} void Student :: Show(){ cout<<"Студент : "<<sname<<"\nЭкзаменов сдал: "<<exam<<endl;} int Student :: GetExam() {return exam;} void Student :: SetExam(int ex) {exam = ex;} void Student :: ITERAT (PF operation,int ex) { Titem* p; p = new (Titem); p = tp; while (p!= NULL) { operation(p->Item,ex); p = p->next; } } class Expirience: public TObject { protected : char *name; int quiz,time; Expirience *next; static Expirience *begin; public: Expirience (); Expirience (char* e, int qu,int t); ~Expirience (); void Insert(); static void Print(); virtual void Show() = 0; }; Expirience* Expirience :: begin = 0; Expirience :: Expirience () { name = new (char [30]); quiz = 0; time = 0; }; Expirience :: Expirience (char* e,int qu,int t) { name = new (char[30]); strcpy(name,e); quiz = qu; time = t; } Expirience :: ~Expirience () { free(name); } void Expirience :: Insert() { bool flag; Expirience *p; flag = false; if (begin == 0) { begin = this; next = 0; } else { p = begin; while (p->next!=0) { if(p==this) { flag = true; break; } p = p->next; } if (flag==false) { next = 0; p->next = this; } } } void Expirience :: Print () { Expirience *p; if(begin!=0) { p=begin; cout <<"-----------------Список предметов----------------\n"; while(p!=0) { cout<<p->name<<endl; p = p->next; } cout <<"-------------------------------------------------\n"; } } class Examine : public Expirience { protected: char* stud; int tick; public : Examine(); Examine(char* e,int qu,int t,int ti,char* s); ~Examine(); void Show(); void Get(); }; Examine :: Examine () {stud = new(char[30]);} Examine :: Examine (char* e,int qu,int t,int ti,char* s) : Expirience (e,qu,t) {stud = new(char[30]); strcpy(stud,s); tick = ti; } Examine :: ~Examine () {free(stud);} void Examine :: Show() {cout<<name<<endl;} void GetEXAM (TObject *p,int exm) { if (typeid(*p)==typeid(Examine)){ ((Examine*)p)->Show(); c++; if (c==3){ c=0; count++; } } if (typeid(*p)==typeid(Student)) { cout<<"\n----------------Студент------------------\n"; ((Student*)p)->Show(); cout<<"Экзаменов не сдано : "<<exm-(((Student*)p)->GetExam())<<"\n"; cout<<"Сдавшие экзамены : \n"; ((Student*)p)->ITERAT(GetEXAM,3); cout<<"-----------------------------------------\n\n"; } }; int main() { PF fp = GetEXAM; Examine inf("ИНФОРМАТИКА",5,120,30,"Все"), mat ("МАТЕМАТИКА",6,45,60,"10"), fhys("ФИЗИКА",3,45,100,"5"); Student Gr("Группа 37A",4),st1("Иванов В.С.",3), st2("Петров А.А.",2), st3("Андреев С.Н.",2), st4("Сидоров С.М.",1), st5("Козырев Н.П.",3),st6("Корнев Ж.Н.",1); st1.Insert(&inf); st1.Insert(&mat); st1.Insert(&fhys); st2.Insert(&mat); st2.Insert(&fhys); st3.Insert(&mat); st3.Insert(&inf); st4.Insert(&inf); st5.Insert(&mat); st5.Insert(&fhys); st5.Insert(&inf); Gr.Insert(&st1); Gr.Insert(&st2); Gr.Insert(&st3); Gr.Insert(&st4); Gr.Insert(&st5); Gr.ITERAT(fp,3); cout<<"\n"<<count<<" студента не сдали свои экзамены до конца!!!\n"; return 0; }; вот мейкфайл #makefile make: main.cpp Expirience.o Examine.o TGroup.o Student.o g++ Expirience.o Examine.o TGroup.o Student.o main.cpp -o EXE expirience: Expirience.h Expirience.cpp g++ Expirience.cpp -c examine: Examine.h Examine.cpp g++ Examine.cpp -c tgroup: TGroup.h TGroup.cpp g++ TGroup.cpp -c student: Student.h Student.cpp g++ Student.cpp -c clr: *.o rm *.o | Всего записей: 3 | Зарегистр. 29-05-2009 | Отправлено: 12:53 29-05-2009 | Исправлено: Raimir, 15:09 30-05-2009 |
|