Advertisement
Guest User

Untitled

a guest
May 3rd, 2015
204
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
C++ 2.62 KB | None | 0 0
  1. #include <iostream>
  2. #include <cstring>
  3.  
  4. using namespace std;
  5.  
  6. class Osoba{
  7.     public:
  8.         char* imie;
  9.         int wiek;
  10.    
  11.     Osoba(const Osoba& o){
  12.         wiek = o.wiek;
  13.         imie = new char[strlen(o.imie)+1];
  14.         strcpy(imie, o.imie);
  15.     }
  16.    
  17.     Osoba(){
  18.         imie = new char[strlen("Krzysztof")+1];
  19.         strcpy(imie, "Krzysztof");
  20.         wiek = 21;
  21.         cout<<"Utworzono: "<<imie<<", "<<wiek<<endl;
  22.     }
  23.    
  24.         Osoba(char* i, int w)
  25.     : imie(i), wiek(w)
  26.     {
  27.         cout<<"Utworzono: "<<imie<<", "<<wiek<<endl;
  28.     }
  29.  
  30.     ~Osoba(){
  31.         delete [] imie;
  32.         cout<<"Zniszczono obiekt"<<endl;
  33.     }
  34.    
  35.     void show(){
  36.         cout<<imie<<", "<<wiek<<endl;
  37.     }
  38. };
  39.  
  40. class Rachunek{
  41.     public:
  42.     Osoba* wlasciciel;
  43.     double stan_konta;
  44.    
  45.     Rachunek(Osoba* o, double stan){
  46.         wlasciciel = o;
  47.         stan_konta = stan;
  48.     }
  49.    
  50.     ~Rachunek(){
  51.         wlasciciel->~Osoba();
  52.     }
  53.    
  54.     Rachunek(const Rachunek &r){
  55.         wlasciciel = r.wlasciciel;
  56.         stan_konta = r.stan_konta;
  57.     }
  58.    
  59.     void show(){
  60.         wlasciciel->show();
  61.         cout<<stan_konta<<endl<<endl;
  62.     }
  63. };
  64.  
  65. class Bank{
  66.     public:
  67.     Rachunek** tab;
  68.     int rachunki;
  69.    
  70.     Bank(){
  71.         tab = new Rachunek*[0];
  72.         rachunki = 0;
  73.     }
  74.    
  75.     void otworzNowyRachunek(Rachunek* r){
  76.         Rachunek** tmp = new Rachunek*[rachunki];
  77.         for(int i=0; i<rachunki; i++){
  78.             tmp[i] = tab[i];
  79.         }
  80.         rachunki++;
  81.         tab = new Rachunek*[rachunki];
  82.         for(int i=0; i<rachunki; i++){
  83.             tab[i] = tmp[i];
  84.         }
  85.         Rachunek& rr = *r;
  86.         tab[rachunki-1] = new Rachunek(rr);
  87.         show();
  88.     }
  89.    
  90.     void zmienWlasciciela(int r, Osoba* o){
  91.         tab[r-1]->wlasciciel = o;
  92.     }
  93.    
  94.     void usunRachunek(int r){
  95.         tab[r-1]->~Rachunek();
  96.     }
  97.    
  98.     void show(){
  99.         for(int i=0; i<rachunki; i++){
  100.             tab[i]->show();
  101.         }
  102.     }
  103. };
  104.  
  105. int main(){
  106.    
  107.     /*
  108.     char *x;
  109.     x = "test";
  110.     Osoba* o1 = new Osoba(x, 10);
  111.     Osoba* o2 = new Osoba(*o1);
  112.     cout<<o1->imie<<endl<<o2->imie<<endl;
  113.     o1->imie = "t";
  114.     cout<<o1->imie<<endl<<o2->imie<<endl;
  115.     */
  116.     /*
  117.     Osoba* o1 = new Osoba("Krzysztof", 21);
  118.     Osoba* o2 = new Osoba();
  119.     o2->show();
  120.     Osoba& ro = *o2;
  121.     Osoba* o3 = new Osoba(ro);
  122.     o2->show();
  123.     o3->show();
  124.     delete o2;
  125.     */
  126.    
  127.     Bank* bank = new Bank();
  128.     Osoba* o1 = new Osoba("Tomek", 30);
  129.     Osoba* o2 = new Osoba("Malgorzata", 28);
  130.    
  131.    
  132.     Rachunek* r1 = new Rachunek(o1, 100);
  133.     Rachunek* r3 = new Rachunek(o1, 100);
  134.     Rachunek* r2 = new Rachunek(o1, 100);
  135.    
  136.     cout<<"Rachunek 1"<<endl<<endl;
  137.     bank->otworzNowyRachunek(r1);
  138.     cout<<"Rachunek 2"<<endl<<endl;
  139.     bank->otworzNowyRachunek(r2);
  140.     cout<<"Rachunek 3"<<endl<<endl;
  141.     bank->otworzNowyRachunek(r3);
  142.    
  143.     cout<<"Po zmianie"<<endl<<endl;
  144.     bank->zmienWlasciciela(2, o2);
  145.     bank->show();
  146.    
  147.     cout<<"Po usunieciu"<<endl<<endl;
  148.     bank->usunRachunek(3);
  149.     bank->show();
  150.    
  151.    
  152. }
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement