jncrusher

Untitled

May 22nd, 2012
49
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
C++ 5.61 KB | None | 0 0
  1. #include<stdio.h>
  2. #include<math.h>
  3. #include<stdlib.h>
  4. #include<string.h>
  5. #include <typeinfo>
  6.  
  7. class samochod {
  8. protected: 
  9.     double cena;
  10.     char rodzaj_silnika[20];
  11. public:
  12.     static int x;
  13.     virtual void wyswietl_atrybuty() {
  14.         printf("\n");
  15.         printf("Cena wynosi:%g\n",cena);
  16.         printf("Rodzaj silnika:%s.\n",rodzaj_silnika);
  17.     };
  18.     samochod *nast;
  19.  
  20.  
  21.     samochod::samochod(){
  22.         char rdz[20]="brak";
  23.         cena=0;
  24.         strcpy(rodzaj_silnika, rdz);
  25.         nast=NULL;
  26.         x=++x;
  27.     }
  28.     samochod::samochod(double a, char b[20]){
  29.         cena=a;
  30.         strcpy(rodzaj_silnika, b);
  31.         nast=NULL;
  32.         x=++x;
  33.     }
  34.     virtual~samochod(){
  35.         if(nast!=NULL){
  36.             x=--x;
  37.         }
  38.  
  39.     }
  40. };
  41. class ciezarowy;
  42.  
  43. class osobowy: public samochod{
  44. protected: 
  45.     double poj_bagaznika;
  46.     int liczba_drzwi;
  47.     char typ_sylwetki[20];
  48. public:
  49.     friend ciezarowy;
  50.     void ustal_atrybuty() {
  51.         double cn;
  52.         char rodzaj[20];
  53.         double poj;
  54.         int liczba;
  55.         char typ[20];
  56.         printf("Cena=");
  57.         scanf("%lf",&cn);
  58.         printf("Rodzaj silnika=");
  59.         scanf("%s",&rodzaj);
  60.         printf("Pojemnosc bagaznika=");
  61.         scanf("%lf",&poj);
  62.         printf("Liczba drzwi=");
  63.         scanf("%d",&liczba);
  64.         printf("Typ sylwetki=");
  65.         scanf("%s",&typ);
  66.         cena=cn;
  67.         strcpy(rodzaj_silnika, rodzaj);
  68.         poj_bagaznika=poj;
  69.         liczba_drzwi=liczba;
  70.         strcpy(typ_sylwetki, typ);
  71.     };
  72.     void wyswietl_atrybuty() {
  73.         printf("\n");
  74.         printf("Cena wynosi:%g\n",cena);
  75.         printf("Rodzaj silnika:%s.\n",rodzaj_silnika);
  76.         printf("Pojemnosc bagaznika:%g\n",poj_bagaznika);
  77.         printf("Liczba drzwi:%d\n",liczba_drzwi);
  78.         printf("Typ sylwetki:%s\n",typ_sylwetki);  
  79.     };
  80.  
  81.     osobowy operator+(osobowy drugi){
  82.         osobowy suma;
  83.         suma.cena=cena+drugi.cena;
  84.         suma.poj_bagaznika=poj_bagaznika+drugi.poj_bagaznika;
  85.         suma.liczba_drzwi=liczba_drzwi+drugi.liczba_drzwi;
  86.         return suma;
  87.     };
  88.     osobowy& operator+=(const osobowy& rv){
  89.         cena+=rv.cena;
  90.         poj_bagaznika+=rv.poj_bagaznika;
  91.         liczba_drzwi+=rv.liczba_drzwi; 
  92.         return *this;
  93.     };
  94.     const osobowy operator=(const osobowy& rv){
  95.         cena=rv.cena;
  96.         poj_bagaznika=rv.poj_bagaznika;
  97.         liczba_drzwi=rv.liczba_drzwi;  
  98.         return *this;
  99.     };
  100.  
  101.  
  102.     osobowy::osobowy(){
  103.         samochod::samochod();
  104.         char tp[20]="brak";
  105.         poj_bagaznika=0;
  106.         liczba_drzwi=3;
  107.         strcpy(typ_sylwetki, tp);
  108.         nast=NULL;
  109.  
  110.     }
  111.     osobowy(double a, char b[20], double c, int d, char e[20]):samochod(a,b){
  112.  
  113.         poj_bagaznika=c;
  114.         liczba_drzwi=d;
  115.         strcpy(typ_sylwetki, e);
  116.         wyswietl_atrybuty();
  117.         nast=NULL;
  118.  
  119.     }
  120.     osobowy(const ciezarowy& rv);
  121.  
  122.     ~osobowy(){
  123.         if(nast!=NULL){
  124.  
  125.             x=--x;
  126.             printf("Typ obiektu:%s\n","osobowy");
  127.             printf("Pole statyczne: %d\n",x);
  128.             delete nast;
  129.         }
  130.     }
  131. };
  132.  
  133. class ciezarowy: public samochod{
  134. protected:
  135.     double max_ladownosc;
  136.     int liczba_kol;
  137. public:
  138.     friend osobowy;
  139.     void ustal_atrybuty() {
  140.         double cn;
  141.         char rodzaj[20];
  142.         double ladownosc;
  143.         int kola;
  144.         printf("Cena=");
  145.         scanf("%lf",&cn);
  146.         printf("Rodzaj silnika=");
  147.         scanf("%s",&rodzaj);
  148.         printf("Maksymalna ladownosc=");
  149.         scanf("%lf",&ladownosc);
  150.         printf("Liczba kol=");
  151.         scanf("%d",&kola);
  152.         cena=cn;
  153.         strcpy(rodzaj_silnika, rodzaj);
  154.         max_ladownosc=ladownosc;
  155.         liczba_kol=kola;
  156.  
  157.     };
  158.     void wyswietl_atrybuty() {
  159.         printf("\n");
  160.         printf("Cena wynosi:%g\n",cena);
  161.         printf("Rodzaj silnika:%s.\n",rodzaj_silnika);
  162.         printf("Maksymalna ladownosc:%g.\n",max_ladownosc);
  163.         printf("Liczba kol:%d.\n",liczba_kol);
  164.     }
  165.     ciezarowy operator+(ciezarowy drugi){
  166.         ciezarowy suma;
  167.         suma.cena=cena+drugi.cena;
  168.         suma.max_ladownosc=max_ladownosc+drugi.max_ladownosc;
  169.         suma.liczba_kol=liczba_kol+drugi.liczba_kol;
  170.         return suma;
  171.     };
  172.     const ciezarowy operator=(const ciezarowy& rv){
  173.         cena=rv.cena;
  174.         max_ladownosc=rv.max_ladownosc;
  175.         liczba_kol=rv.liczba_kol;  
  176.         return *this;
  177.     };
  178.     const ciezarowy operator+=(const ciezarowy& rv){
  179.         cena+=rv.cena;
  180.         max_ladownosc+=rv.max_ladownosc;
  181.         liczba_kol+=rv.liczba_kol; 
  182.         return *this;
  183.     };
  184.     ciezarowy::ciezarowy(){
  185.         samochod::samochod();
  186.         max_ladownosc=0;
  187.         liczba_kol=4;  
  188.         nast=NULL;
  189.     }
  190.     ciezarowy(double a, char b[20], double c, int d):samochod(a,b){
  191.         max_ladownosc=c;
  192.         liczba_kol=d;
  193.         wyswietl_atrybuty();
  194.         nast=NULL;
  195.  
  196.     }
  197.     ciezarowy(const osobowy& rv){
  198.         cena=rv.cena;
  199.         max_ladownosc=rv.poj_bagaznika;
  200.         liczba_kol=rv.liczba_drzwi;
  201.     }
  202.    
  203.    
  204.    
  205.    
  206.     ~ciezarowy(){
  207.         if(nast!=NULL){
  208.             x=--x;
  209.             printf("Typ obiektu:%s\n","ciezarowy");
  210.             printf("Pole statyczne: %d\n",x);
  211.             delete nast;
  212.         }
  213.     }
  214.  
  215.  
  216. };
  217.  
  218. int samochod::x = 9;
  219. samochod *glowa=NULL;
  220. samochod *wsk=NULL;
  221.  
  222. void fun_rozpoznajaca(samochod **wskaznik){
  223.     if (typeid(*wsk) == typeid(osobowy))
  224.         printf("Kolejny element jest typu osobowy.\n");
  225.     else if (typeid(*wsk) == typeid(ciezarowy))
  226.         printf("Kolejny element jest typu ciezarowy.\n");
  227.  
  228.  
  229.  
  230. }
  231. osobowy::osobowy(const ciezarowy& rv){
  232.     cena=rv.cena;
  233.     poj_bagaznika=rv.max_ladownosc;
  234.     liczba_drzwi=rv.liczba_kol;
  235. }
  236.  
  237. int main() {
  238.     printf("A1:\n");
  239.     osobowy A1(132.0,"diesel",2.0,3,"hatchback");
  240.     printf("A2:\n");
  241.     osobowy A2(234.8,"benzyna",2.3,3,"combi");
  242.     printf("A3:\n");
  243.     osobowy A3(234.8,"benzyna",2.3,3,"combi");
  244.     printf("B1:\n");
  245.     ciezarowy B1(201.9, "benzyna", 34.7, 6);
  246.     printf("B2:\n");
  247.     ciezarowy B2(272.4, "ON", 45.7, 8);
  248.     printf("B3:\n");
  249.     ciezarowy B3(279.1, "ON", 60.7, 8);
  250.  
  251.     ciezarowy B4(A3);
  252.     B4.wyswietl_atrybuty();
  253.     osobowy A4(B3);
  254.     A4.wyswietl_atrybuty();
  255.    
  256.     A2=A1+=B1;
  257.     A2.wyswietl_atrybuty();
  258.     B1=B2+=A1;
  259.     B1.wyswietl_atrybuty();
  260.     B2=B1=A1+A2;
  261.     B2.wyswietl_atrybuty();
  262.     A1=B1+A1+A2;
  263.     A1.wyswietl_atrybuty();
  264.     A3=A2+A1;
  265.     A3.wyswietl_atrybuty();
  266.     B3=A3;
  267.     B3.wyswietl_atrybuty();
  268.     B2=A3+B1+A1;
  269.     B2.wyswietl_atrybuty();
  270.     getchar();
  271.     getchar();
  272.     exit(0);
  273.     return 0;
  274.  
  275. };
Advertisement
Add Comment
Please, Sign In to add comment