Advertisement
Aseron

havasi peldafeladat 3

Nov 26th, 2017
414
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
C++ 5.32 KB | None | 0 0
  1. #include <iostream>
  2. #include <string.h>
  3.  
  4. using namespace std;
  5.  
  6. class Hallgato{
  7.     char* nev;
  8.     char* eha;
  9.     int h;
  10.     unsigned int kepesseg;
  11. public:
  12.     Hallgato(char* nev,char* eha,int h, unsigned int kepesseg);
  13.     void operator-=(int n);
  14.     friend ostream& operator<<(ostream& o, Hallgato& h);
  15.     char* getNev();
  16.     char* getEha();
  17.     int getH();
  18.     unsigned int getKepesseg();
  19. };
  20.  
  21. char* Hallgato::getNev(){
  22.     return nev;
  23. }
  24.  
  25. char* Hallgato::getEha(){
  26.     return eha;
  27. }
  28.  
  29. int Hallgato::getH(){
  30.     return h;
  31. }
  32.  
  33. unsigned int Hallgato::getKepesseg(){
  34.     return kepesseg;
  35. }
  36.  
  37. Hallgato::Hallgato(char* nev,char* eha,int h, unsigned int kepesseg){
  38.     this->nev = nev;
  39.     this->eha = eha;
  40.     this->h = h;
  41.     this->kepesseg = kepesseg;
  42. }
  43.  
  44. void Hallgato::operator-=(int n){
  45.     if(kepesseg-n >= 0){
  46.         this->kepesseg-=n;
  47.     }else kepesseg = 0;
  48. }
  49.  
  50. ostream& operator<<(ostream& o, Hallgato& h){
  51.     o << h.getNev() << ", EHA: " << h.getEha() << ", H-s: " << h.getH() << ", Kepesseg: " << h.getKepesseg() << endl;
  52. return o;
  53. }
  54.  
  55. class Dolgozat{
  56.     int maxpont;
  57.     int nehezseg;
  58. public:
  59.     int getMaxpont();
  60.     int getNehezseg();
  61.     Dolgozat(int maxpont, int nehezseg);
  62.     friend ostream& operator<<(ostream& o, Dolgozat& d);
  63. };
  64.  
  65. int Dolgozat::getNehezseg(){
  66. return nehezseg;
  67. }
  68.  
  69. int Dolgozat::getMaxpont(){
  70. return maxpont;
  71. }
  72.  
  73. Dolgozat::Dolgozat(int maxpont, int nehezseg){
  74.     this->maxpont = maxpont;
  75.     this->nehezseg = nehezseg;
  76. }
  77.  
  78. ostream& operator<<(ostream& o, Dolgozat& d){
  79.     o << "Maximális pontszám: " << d.getMaxpont() << endl;
  80.     o << "Nehézség: " << d.getNehezseg() << endl;
  81. return o;
  82. }
  83.  
  84. class Egyetem{
  85.     Dolgozat **dol;
  86.     Hallgato **hal;
  87.     int dolN;
  88.     int halN;
  89.     int dolCNT;
  90.     int halCNT;
  91. public:
  92.     Egyetem(int dolN, int halN);
  93.     Egyetem(Egyetem*);
  94.     ~Egyetem();
  95.     void operator+=(Hallgato& h);
  96.     void operator+=(Dolgozat& d);
  97.     friend ostream& operator<<(ostream& o, Egyetem& e);
  98.     void dolgoztMegir(int dolgozatSorszam);
  99.     void operator-=(char* eha);
  100.     Hallgato* operator[](int h);
  101. };
  102.  
  103. Egyetem::~Egyetem(){
  104.     for(int i = 0; i<dolN; i++){
  105.         delete dol[i];
  106.     }
  107.     for(int j = 0; j<halN; j++){
  108.         delete hal[j];
  109.     }
  110.     delete []dol;
  111.     delete []hal;
  112. }
  113.  
  114. Hallgato* Egyetem::operator[](int h){
  115.     for(int i = 0; i<halCNT; i++){
  116.         if(hal[i]->getH() == h){
  117.             return hal[i];
  118.         }
  119.     }
  120.     return NULL;
  121. }
  122.  
  123. void Egyetem::operator-=(char* eha){
  124.     for(int i = 0; i<halCNT; i++){
  125.         if(!strcmp(hal[i]->getEha(),eha)){
  126.             delete hal[i];
  127.             hal[i] = NULL;
  128.         }
  129.     }
  130. }
  131.  
  132. ostream& operator<<(ostream& o, Egyetem& e){
  133.     for(int i = 0; i<e.dolCNT; i++){
  134.         o << *e.dol[i] << endl;
  135.     }
  136.  
  137.     for(int i = 0; i<e.halCNT; i++){
  138.         o << *e.hal[i] << endl;
  139.     }
  140.  
  141.     o << "Dolgozat alkalom: " << e.dolN-e.dolCNT << "db" <<endl;
  142.     o << "Hallgatónak szabad hely: " << e.halN-e.halCNT << "db" << endl << endl;
  143. return o;
  144. }
  145.  
  146. void Egyetem::dolgoztMegir(int dolgozatSorszam){
  147.     if(dolgozatSorszam<=dolCNT && dolgozatSorszam > 0){
  148.         for(int i = 0; i<halCNT; i++){
  149.             int pontszam = hal[i]->getKepesseg() / dol[dolgozatSorszam-1]->getNehezseg();
  150.             if(pontszam > dol[dolgozatSorszam-1]->getMaxpont()){
  151.                 pontszam = dol[dolgozatSorszam-1]->getMaxpont();
  152.             }
  153.             cout << hal[i]->getNev() << " hallgató pontszáma: " << pontszam << (pontszam < (dol[dolgozatSorszam-1]->getMaxpont()/2) ? " MEGBUKOTT!!!" : " Kegyelem kettes!") << endl;
  154.         }
  155.     }else cout << "Nincs ilyen sorszámú dolgozat" << endl;
  156. }
  157.  
  158. void Egyetem::operator+=(Dolgozat& d){
  159.     exception e;
  160.     try{
  161.         if(!(dolCNT<dolN)) throw e;
  162.         dol[dolCNT] = new Dolgozat(d);
  163.         dolCNT++;
  164.     }catch(exception e){
  165.         cout << "Nincs több hely a dolgozatnak!" << endl;
  166.     }
  167. }
  168.  
  169. void Egyetem::operator+=(Hallgato& h){
  170.     exception e;
  171.     try{
  172.         if(!(halCNT<halN)) throw e;
  173.         hal[halCNT] = new Hallgato(h);
  174.         halCNT++;
  175.     }catch(exception e){
  176.         cout << "Nincs több hely a hallgatónak!" << endl;
  177.     }
  178. }
  179.  
  180. Egyetem::Egyetem(Egyetem* e){
  181.     this->dolN = e->dolN;
  182.     this->halN = e->halN;
  183.     this->dolCNT = e->dolCNT;
  184.     this->halCNT = e->halCNT;
  185.     for(int i = 0; i<dolN; i++){
  186.         dol[i] = e->dol[i];
  187.     }
  188.     for(int j = 0; j<halN; j++){
  189.         hal[j] = e->hal[j];
  190.     }
  191. }
  192.  
  193. Egyetem::Egyetem(int dolN, int halN){
  194.     this->dolN = dolN;
  195.     this->halN = halN;
  196.     dol = new Dolgozat*[dolN];
  197.     hal = new Hallgato*[halN];
  198.     this->dolCNT = 0;
  199.     this->halCNT = 0;
  200.  
  201.     for(int i = 0; i<dolN; i++){
  202.         dol[i] = NULL;
  203.     }
  204.     for(int j = 0; j<halN; j++){
  205.         hal[j] = NULL;
  206.     }
  207.  
  208. }
  209. int main()
  210. {
  211.     setlocale(LC_ALL,"HUN");
  212.     Hallgato h1("Székely Péter","H112233",102030,100);
  213.     Hallgato h2("Gaál Marcell","H223344",203040,90);
  214.     Hallgato h3("Tápai Unknown","H334455",304050,70);
  215.     Hallgato h4("Németh Gábor","H445566",405060,160);
  216.  
  217.     h1-=40; // FNT!!!
  218.  
  219.     Dolgozat d1(80,2);
  220.     Dolgozat d2(90,3);
  221.  
  222.     Egyetem e(2,4);
  223.     e+=h1;
  224.     e+=h2;
  225.     e+=h3;
  226.     e+=h4;
  227.  
  228.     e+=d1;
  229.     e+=d2;
  230.  
  231.     cout << e;
  232.  
  233.     e.dolgoztMegir(1);
  234.  
  235.     cout << endl;
  236.  
  237.     e.dolgoztMegir(2);
  238.  
  239. return 0;
  240. }
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement