Advertisement
Aseron

havasi peldafeladat 2

Nov 26th, 2017
460
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
C++ 3.57 KB | None | 0 0
  1. #include <iostream>
  2. #include <string.h>
  3. #include <stdlib.h>
  4.  
  5. using namespace std;
  6.  
  7. class Ajandek{
  8.     char* nev;
  9.     char* felirat;
  10. public:
  11.     char* getNev();
  12.     char* getFelirat();
  13.     Ajandek(char* nev, char* felirat);
  14.     void operator+=(char*);
  15. };
  16.  
  17. char* Ajandek::getNev(){
  18. return nev;
  19. }
  20.  
  21. char* Ajandek::getFelirat(){
  22. return felirat;
  23. }
  24.  
  25. Ajandek::Ajandek(char* nev, char* felirat){
  26.     this->nev = nev;
  27.     this->felirat = felirat;
  28. }
  29.  
  30. void Ajandek::operator+=(char* x){
  31.  
  32.     char a[strlen(felirat)+strlen(x)];
  33.     strcpy(a,felirat);
  34.     strcat(a," ");
  35.     strcat(a,x);
  36.     felirat = (char*)malloc((strlen(felirat)+strlen(x))*sizeof(char));
  37.     strcpy(felirat,a);
  38.  
  39. }
  40.  
  41. class Karacsonyfa{
  42.     int magas;
  43.     int n;
  44.     int cnt;
  45.     Ajandek **m;
  46. public:
  47.     Karacsonyfa(int magas, int n);
  48.     Karacsonyfa(Karacsonyfa*);
  49.     ~Karacsonyfa();
  50.     void operator+=(Ajandek& a);
  51.     friend ostream& operator<<(ostream& o,Karacsonyfa& k);
  52.     void operator--(int);
  53.     void operator++();
  54. };
  55.  
  56. ostream& operator<<(ostream& o, Karacsonyfa& k){
  57.     o << "A fa " << k.magas << "cm magas." << endl;
  58.     for(int i = 0; i<k.cnt; i++){
  59.         o << k.m[i]->getFelirat() << endl;
  60.     }
  61.     return o;
  62. }
  63.  
  64. void Karacsonyfa::operator--(int){
  65.     if(cnt-1 >= 0){
  66.         cout << m[cnt-1]->getNev() << endl;
  67.         delete m[cnt-1];
  68.         m[cnt-1] = NULL;
  69.         cnt--;
  70.     }else cout << "Nincs több ajándék a fa alatt! :(" << endl;
  71. }
  72.  
  73. void Karacsonyfa::operator++(){
  74.     magas+=10;
  75. }
  76.  
  77. void Karacsonyfa::operator+=(Ajandek& a){
  78.     if(cnt<n){
  79.         m[cnt] = new Ajandek(a);
  80.         cnt++;
  81.     }else{
  82.         cerr << "HIBA: Nem fér több ajándék a karácsonyfa alá!" << endl;
  83.     }
  84. }
  85.  
  86. Karacsonyfa::Karacsonyfa(int magas, int n){
  87.     this->magas = magas;
  88.     this->n = n;
  89.     m = new Ajandek*[n];
  90.     this->cnt = 0;
  91.     for(int i = 0; i<n; i++){
  92.         m[i] = NULL;
  93.     }
  94. }
  95.  
  96. Karacsonyfa::Karacsonyfa(Karacsonyfa* k){
  97.     this->magas = k->magas;
  98.     this->n = k->n;
  99.     this->cnt = k->cnt;
  100.     for(int i = 0; i<n; i++){
  101.         this->m[i] = k->m[i];
  102.     }
  103. }
  104.  
  105. Karacsonyfa::~Karacsonyfa(){
  106.     for(int i = 0; i<n; i++){
  107.         delete m[i];
  108.     }
  109.     delete []m;
  110. }
  111.  
  112. int main()
  113. {
  114.     setlocale(LC_ALL,"HUN");
  115.  
  116.     Ajandek a1("X-Act","Boldog Karit Ádám!");
  117.     Ajandek a2("Kangertech Subox Mini-C ","Boldog Karit Csernok!");
  118.     Ajandek a3("Jegyzokonyv","Boldog Karit Bandi!");
  119.     Ajandek a4("Herbál","Boldog Karit Kóbi!");
  120.     Ajandek a5("Ducati","Boldog Karit SS!");
  121.     Ajandek a6("Jelek ZH 5-ös","Boldog Karit Kiri!");
  122.     Ajandek a7("Éles látás","Boldog Karit Matacz!");
  123.     Ajandek a8("Switch","Boldog Karit Sziszkó!");
  124.     Ajandek a9("Summa Cum Lauda","Boldog Karit Ságodi!");
  125.     Ajandek a10("Éles látás","Boldog Karit Matacz!");
  126.     Ajandek a11("Állampolgárság","Boldog Karit Miro!");
  127.     Ajandek a12("Unicorn Milk","Boldog Karit Flash!");
  128.     Ajandek a13("Minecraft","Boldog Karit Zsóti!");
  129.     Ajandek a14("Fésű","Boldog Karit Szabi!");
  130.     Ajandek a15("iPhone XxX","Boldog Karit Matyi!");
  131.  
  132.  
  133.     Karacsonyfa k(100,15);
  134.  
  135.     char* plusz = "SzirSzar! <3";
  136.     a2+=plusz;
  137.  
  138.     k+=a1;
  139.     k+=a2;
  140.     k+=a3;
  141.     k+=a4;
  142.     k+=a5;
  143.     k+=a6;
  144.     k+=a7;
  145.     k+=a8;
  146.     k+=a9;
  147.     k+=a10;
  148.     k+=a11;
  149.     k+=a12;
  150.     k+=a13;
  151.     k+=a14;
  152.     k+=a15;
  153.  
  154.     cout << k;
  155.     cout << endl;
  156.  
  157.     ++k;
  158.     cout << k;
  159.     cout << endl;
  160.  
  161.     k--;
  162.     k--;
  163.     k--;
  164.     k--;
  165.     k--;
  166.     k--;
  167.     k--;
  168.     k--;
  169.     k--;
  170.     k--;
  171.     k--;
  172.     k--;
  173.     k--;
  174.     k--;
  175.     k--;
  176.  
  177. return 0;
  178. }
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement