Don't like ads? PRO users don't see any ads ;-)
Guest

Untitled

By: jncrusher on May 22nd, 2012  |  syntax: C++  |  size: 5.61 KB  |  hits: 27  |  expires: Never
download  |  raw  |  embed  |  report abuse  |  print
Text below is selected. Please press Ctrl+C to copy to your clipboard. (⌘+C on Mac)
  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. };