Advertisement
Not a member of Pastebin yet?
Sign Up,
it unlocks many cool features!
- #include <iostream>
- #include <string.h>
- using namespace std;
- class Hallgato{
- char* nev;
- char* eha;
- int h;
- unsigned int kepesseg;
- public:
- Hallgato(char* nev,char* eha,int h, unsigned int kepesseg);
- void operator-=(int n);
- friend ostream& operator<<(ostream& o, Hallgato& h);
- char* getNev();
- char* getEha();
- int getH();
- unsigned int getKepesseg();
- };
- char* Hallgato::getNev(){
- return nev;
- }
- char* Hallgato::getEha(){
- return eha;
- }
- int Hallgato::getH(){
- return h;
- }
- unsigned int Hallgato::getKepesseg(){
- return kepesseg;
- }
- Hallgato::Hallgato(char* nev,char* eha,int h, unsigned int kepesseg){
- this->nev = nev;
- this->eha = eha;
- this->h = h;
- this->kepesseg = kepesseg;
- }
- void Hallgato::operator-=(int n){
- if(kepesseg-n >= 0){
- this->kepesseg-=n;
- }else kepesseg = 0;
- }
- ostream& operator<<(ostream& o, Hallgato& h){
- o << h.getNev() << ", EHA: " << h.getEha() << ", H-s: " << h.getH() << ", Kepesseg: " << h.getKepesseg() << endl;
- return o;
- }
- class Dolgozat{
- int maxpont;
- int nehezseg;
- public:
- int getMaxpont();
- int getNehezseg();
- Dolgozat(int maxpont, int nehezseg);
- friend ostream& operator<<(ostream& o, Dolgozat& d);
- };
- int Dolgozat::getNehezseg(){
- return nehezseg;
- }
- int Dolgozat::getMaxpont(){
- return maxpont;
- }
- Dolgozat::Dolgozat(int maxpont, int nehezseg){
- this->maxpont = maxpont;
- this->nehezseg = nehezseg;
- }
- ostream& operator<<(ostream& o, Dolgozat& d){
- o << "Maximális pontszám: " << d.getMaxpont() << endl;
- o << "Nehézség: " << d.getNehezseg() << endl;
- return o;
- }
- class Egyetem{
- Dolgozat **dol;
- Hallgato **hal;
- int dolN;
- int halN;
- int dolCNT;
- int halCNT;
- public:
- Egyetem(int dolN, int halN);
- Egyetem(Egyetem*);
- ~Egyetem();
- void operator+=(Hallgato& h);
- void operator+=(Dolgozat& d);
- friend ostream& operator<<(ostream& o, Egyetem& e);
- void dolgoztMegir(int dolgozatSorszam);
- void operator-=(char* eha);
- Hallgato* operator[](int h);
- };
- Egyetem::~Egyetem(){
- for(int i = 0; i<dolN; i++){
- delete dol[i];
- }
- for(int j = 0; j<halN; j++){
- delete hal[j];
- }
- delete []dol;
- delete []hal;
- }
- Hallgato* Egyetem::operator[](int h){
- for(int i = 0; i<halCNT; i++){
- if(hal[i]->getH() == h){
- return hal[i];
- }
- }
- return NULL;
- }
- void Egyetem::operator-=(char* eha){
- for(int i = 0; i<halCNT; i++){
- if(!strcmp(hal[i]->getEha(),eha)){
- delete hal[i];
- hal[i] = NULL;
- }
- }
- }
- ostream& operator<<(ostream& o, Egyetem& e){
- for(int i = 0; i<e.dolCNT; i++){
- o << *e.dol[i] << endl;
- }
- for(int i = 0; i<e.halCNT; i++){
- o << *e.hal[i] << endl;
- }
- o << "Dolgozat alkalom: " << e.dolN-e.dolCNT << "db" <<endl;
- o << "Hallgatónak szabad hely: " << e.halN-e.halCNT << "db" << endl << endl;
- return o;
- }
- void Egyetem::dolgoztMegir(int dolgozatSorszam){
- if(dolgozatSorszam<=dolCNT && dolgozatSorszam > 0){
- for(int i = 0; i<halCNT; i++){
- int pontszam = hal[i]->getKepesseg() / dol[dolgozatSorszam-1]->getNehezseg();
- if(pontszam > dol[dolgozatSorszam-1]->getMaxpont()){
- pontszam = dol[dolgozatSorszam-1]->getMaxpont();
- }
- cout << hal[i]->getNev() << " hallgató pontszáma: " << pontszam << (pontszam < (dol[dolgozatSorszam-1]->getMaxpont()/2) ? " MEGBUKOTT!!!" : " Kegyelem kettes!") << endl;
- }
- }else cout << "Nincs ilyen sorszámú dolgozat" << endl;
- }
- void Egyetem::operator+=(Dolgozat& d){
- exception e;
- try{
- if(!(dolCNT<dolN)) throw e;
- dol[dolCNT] = new Dolgozat(d);
- dolCNT++;
- }catch(exception e){
- cout << "Nincs több hely a dolgozatnak!" << endl;
- }
- }
- void Egyetem::operator+=(Hallgato& h){
- exception e;
- try{
- if(!(halCNT<halN)) throw e;
- hal[halCNT] = new Hallgato(h);
- halCNT++;
- }catch(exception e){
- cout << "Nincs több hely a hallgatónak!" << endl;
- }
- }
- Egyetem::Egyetem(Egyetem* e){
- this->dolN = e->dolN;
- this->halN = e->halN;
- this->dolCNT = e->dolCNT;
- this->halCNT = e->halCNT;
- for(int i = 0; i<dolN; i++){
- dol[i] = e->dol[i];
- }
- for(int j = 0; j<halN; j++){
- hal[j] = e->hal[j];
- }
- }
- Egyetem::Egyetem(int dolN, int halN){
- this->dolN = dolN;
- this->halN = halN;
- dol = new Dolgozat*[dolN];
- hal = new Hallgato*[halN];
- this->dolCNT = 0;
- this->halCNT = 0;
- for(int i = 0; i<dolN; i++){
- dol[i] = NULL;
- }
- for(int j = 0; j<halN; j++){
- hal[j] = NULL;
- }
- }
- int main()
- {
- setlocale(LC_ALL,"HUN");
- Hallgato h1("Székely Péter","H112233",102030,100);
- Hallgato h2("Gaál Marcell","H223344",203040,90);
- Hallgato h3("Tápai Unknown","H334455",304050,70);
- Hallgato h4("Németh Gábor","H445566",405060,160);
- h1-=40; // FNT!!!
- Dolgozat d1(80,2);
- Dolgozat d2(90,3);
- Egyetem e(2,4);
- e+=h1;
- e+=h2;
- e+=h3;
- e+=h4;
- e+=d1;
- e+=d2;
- cout << e;
- e.dolgoztMegir(1);
- cout << endl;
- e.dolgoztMegir(2);
- return 0;
- }
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement