Advertisement
Dzaco

Lab12 ściąga

May 14th, 2018
191
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
C++ 10.59 KB | None | 0 0
  1. #include<iostream>
  2. #include<cstdlib>
  3. #include<cstdio>
  4. #include<cstring>
  5. using namespace std;
  6.  
  7. //==========================================
  8.  
  9. class silnik{
  10. protected:
  11.     float moc;
  12.     float dlug;
  13.     float wys;
  14.     float szer;
  15. public:
  16.     silnik * nast;
  17.  
  18.     void wypisz();
  19.     silnik();
  20.     silnik(float, float, float, float);
  21.     silnik(silnik& sil);
  22.     ~silnik();
  23.     friend class blejtram;
  24. };
  25.  
  26. class samochod{
  27. protected:
  28.     int cena;
  29.     char *r_silnik;
  30. public:
  31.     samochod *nast;
  32.     virtual void wypisz();
  33.  
  34.     // metoda przeci¹¿ona operatora +=...
  35.     samochod();
  36.     samochod(int, const char*);
  37.     samochod(samochod& sm);
  38.     ~samochod();
  39.     friend class blejtram;
  40.     friend class lista;
  41.    
  42. };
  43.  
  44. class optyka{
  45. protected:
  46.     float zoom;
  47.     float waga;
  48. public:
  49.     optyka *nast;
  50.     void wypisz();
  51.  
  52.     optyka();
  53.     optyka(float, float);
  54.     optyka(optyka& op);
  55.     ~optyka();
  56.     friend class blejtram;
  57. };
  58.  
  59. class osoba{
  60. protected:
  61.     char *imie;
  62.     char *nazwisko;
  63.     char *email;
  64. public:
  65.     osoba *nast;
  66.  
  67.     void wypisz();
  68.  
  69.     osoba();
  70.     osoba(const char*, const char*, const char*);
  71.     osoba(osoba& os);
  72.     ~osoba();
  73.     friend class blejtram;
  74. };
  75.  
  76. class blejtram{
  77. public:
  78.     silnik *glowa;
  79.     samochod *glowa_S;
  80.     optyka *glowa_O;
  81.     osoba *glowa_os;
  82.  
  83.     blejtram();
  84.     blejtram(float, float, float, float);
  85.     blejtram(int c, char *n);
  86.     blejtram(float, float);
  87.     blejtram(char *i, char*n, char*e);
  88.  
  89.     void dodaj(float, float, float, float);
  90.     void dodaj(int c, const char *n);
  91.     void dodaj(float, float);
  92.     void dodaj(const char *i, const char*n, const char*e);
  93.     void wypisz();
  94.  
  95.     ~blejtram();
  96. };
  97.  
  98. class osobowy:public samochod{
  99. protected:
  100.     float poj;
  101.     int l_drzwi;
  102.     char typ;
  103. public:
  104.     osobowy() :samochod(){
  105.         poj = 0;
  106.         l_drzwi = 0;
  107.         typ = '0';
  108.         nast = NULL;
  109.     };
  110.     osobowy(float a, int b, char c, int d, const char * e) : samochod(d, e){
  111.        
  112.         if (a < 0)
  113.         {
  114.             poj = a*(-1);
  115.         }
  116.         else poj = a;
  117.  
  118.         if (b < 0)
  119.         {
  120.             l_drzwi = b*(-1);
  121.         }
  122.         else if(b==0) l_drzwi = 2;
  123.         else l_drzwi = b;      
  124.         typ = c;
  125.         nast = NULL;
  126.     };
  127.     osobowy(osobowy& os) : samochod(os){
  128.         poj = os.poj;
  129.         l_drzwi = os.l_drzwi;
  130.         typ = os.typ;
  131.         nast = os.nast;
  132.     };
  133.     ~osobowy();
  134.     void wypisz();
  135. };
  136.  
  137. class ciezarowy : public samochod{
  138. protected:
  139.     float max;
  140.     int l_kol;
  141. public:
  142.     ciezarowy() :samochod(){
  143.         max = 0;
  144.         l_kol = 4;
  145.         nast = NULL;
  146.     };
  147.     ciezarowy(float m, int l, int c, const char *r):samochod(c, r){
  148.         if (m < 0)
  149.         {
  150.             max = m*(-1);
  151.         }
  152.         else max = m;
  153.  
  154.         if (m < 0)
  155.         {
  156.             l_kol = l*(-1);
  157.         }
  158.         else if(m>0 && m<4 )l_kol =4;
  159.         else l_kol = l;
  160.        
  161.         nast = NULL;
  162.     };
  163.     ciezarowy(ciezarowy& c) :samochod(c){
  164.         max = c.max;
  165.         l_kol = c.l_kol;
  166.         nast = c.nast;
  167.     };
  168.     ~ciezarowy(){ delete nast; };
  169.     void wypisz();
  170. };
  171.  
  172. class lista{
  173. public:
  174.     samochod *glowa;
  175.  
  176.     lista();
  177.     lista(float a, int b, char c, int d, const char * e);
  178.     //lista(float m, int l, int c, const char *r);
  179.     ~lista(){ delete glowa; };
  180.     void wypisz();
  181.     void dodaj(float a, int b, char c, int d, const char * e);
  182.     void dodaj(float m, int l, int c, const char *r);
  183. };
  184. //==========================================
  185.  
  186. lista::lista()
  187. {
  188.     glowa = NULL;
  189. }
  190.  
  191. lista::lista(float a, int b, char c, int d, const char * e)
  192. {
  193.     osobowy *os= new osobowy(a, b, c, d, e);
  194.     glowa = os;
  195.     glowa->nast = NULL;
  196.    
  197. }
  198.  
  199. void lista::dodaj(float a, int b, char c, int d, const char * e)
  200. {
  201.     samochod *wsk = glowa;
  202.     if (!glowa)
  203.     {
  204.         glowa = new osobowy(a,b,c,d,e);
  205.         wsk = glowa;
  206.     }
  207.     else
  208.     {
  209.         while (wsk->nast != NULL)
  210.         {
  211.             wsk = wsk->nast;
  212.         }
  213.         wsk->nast = new osobowy(a,b,c,d,e);
  214.         wsk = wsk->nast;
  215.     }
  216. }
  217.  
  218. void lista::dodaj(float m, int l, int c, const char *r)
  219. {
  220.     samochod *wsk = glowa;
  221.     if (!glowa)
  222.     {
  223.         glowa = new ciezarowy(m,l,c,r);
  224.         wsk = glowa;
  225.     }
  226.     else
  227.     {
  228.         while (wsk->nast != NULL)
  229.         {
  230.             wsk = wsk->nast;
  231.         }
  232.         wsk->nast = new ciezarowy(m,l,c,r);
  233.         wsk = wsk->nast;
  234.     }
  235. }
  236.  
  237. void lista::wypisz()
  238. {
  239.    
  240.     samochod *wsk = glowa;
  241.     while (wsk != NULL)
  242.     {
  243.         wsk->wypisz();
  244.         wsk = wsk->nast;
  245.     }
  246.    
  247. }
  248. //==========================================
  249.  
  250.  
  251. samochod::samochod()
  252. {
  253.     cena = 0;
  254.     r_silnik = new char[3];
  255.     nast = NULL;
  256. }
  257.  
  258. samochod::samochod(int c, const char *n)
  259. {
  260.     if (c < 0)
  261.     {
  262.         cena = c*(-1);
  263.     }
  264.     else
  265.     {
  266.         cena = c;
  267.     }
  268.     r_silnik = new char[3];
  269.     strcpy(r_silnik, n);
  270.     nast = NULL;
  271. }
  272.  
  273. samochod::samochod(samochod & sm){
  274.     cena = sm.cena;
  275.     r_silnik = new char[3];
  276.     strcpy(r_silnik, sm.r_silnik);
  277.     nast = sm.nast;
  278. }
  279.  
  280. samochod::~samochod()
  281. {
  282.     delete r_silnik;
  283.     delete nast;
  284. }
  285.  
  286. void samochod::wypisz()
  287. {
  288.     cout << "cena: " << cena << "  ";
  289.     printf("rodzaj silnika: %s\n", r_silnik);
  290. }
  291.  
  292. //==========================================
  293. osobowy::~osobowy()
  294. {
  295. }
  296.  
  297. void osobowy::wypisz()
  298. {
  299.     cout << "samochod osobowy  \n";
  300.     this->samochod::wypisz();
  301.     cout << "pojemnosc: " << poj << endl;
  302.     cout << "liczba drzwi: " << l_drzwi << endl;
  303.     cout << "typ: " << typ << endl<<endl;
  304. }
  305.  
  306. //==========================================
  307.  
  308. void ciezarowy::wypisz()
  309. {
  310.     cout << "samochod ciezarowy \n";
  311.     this->samochod::wypisz();
  312.     cout << "maksymalna ladownosc: " << max << endl;
  313.     cout << "liczba kol: " << l_kol << endl << endl;
  314. }
  315. //==========================================
  316. void silnik::wypisz()
  317. {
  318.     cout << "moc: " << moc << endl;
  319.     cout << "dlugosc: " << dlug << endl;
  320.     cout << "szerokosc: " << szer << endl;
  321.     cout << "wysokosc: " << wys << endl;
  322. }
  323.  
  324. silnik::silnik()
  325. {
  326.     moc = 0;
  327.     dlug = wys = szer = 0;
  328.     nast = NULL;
  329. }
  330.  
  331. silnik::silnik(float m, float d, float w, float s){
  332.     moc = m;
  333.     dlug = d;
  334.     wys = w;
  335.     szer = s;
  336.  
  337.     nast = NULL;
  338. }
  339.  
  340. silnik::silnik(silnik& sil)
  341. {
  342.     moc = sil.moc;
  343.     dlug = sil.dlug;
  344.     wys = sil.wys;
  345.     szer = sil.szer;
  346.  
  347.     nast = sil.nast;
  348. }
  349.  
  350. silnik::~silnik()
  351. {
  352.     delete nast;
  353.    
  354. }
  355.  
  356. //==========================================
  357.  
  358. void optyka::wypisz(){
  359.     cout << "zoom: " << zoom << "   waga: " << waga << endl;
  360. }
  361.  
  362. optyka::optyka(){
  363.     zoom = 0.0;
  364.     waga = 0.0;
  365.     nast = NULL;
  366. }
  367.  
  368. optyka::optyka(float z, float w)
  369. {
  370.     zoom = z;
  371.     waga = w;
  372.     nast = NULL;
  373.    
  374. }
  375.  
  376. optyka::optyka(optyka& op)
  377. {
  378.     zoom = op.zoom;
  379.     waga = op.waga;
  380.     nast = op.nast;
  381. }
  382.  
  383. optyka::~optyka()
  384. {
  385.     delete nast;
  386.  
  387. }
  388.  
  389. //=========================================
  390.  
  391. void osoba::wypisz()
  392. {
  393.     cout << "imie i nazwisko:  " << imie << " " << nazwisko << endl;
  394.     cout << "e-mail: " << email << endl;
  395. }
  396.  
  397. osoba::osoba()
  398. {
  399.     imie = new char[55];
  400.     nazwisko = new char[55];
  401.     email = new char[55];
  402.  
  403.     nast = NULL;
  404. }
  405.  
  406. osoba::osoba(const char *i, const char*n, const char*e)
  407. {
  408.     imie = new char[55];
  409.     strcpy(imie, i);
  410.     nazwisko = new char[55];
  411.     strcpy(nazwisko, n);
  412.     email = new char[55];
  413.     strcpy(email, e);
  414.     nast = NULL;
  415. }
  416.  
  417. osoba::osoba(osoba& os)
  418. {
  419.     imie = new char[50];
  420.     strcpy(imie, os.imie);
  421.     nazwisko = new char[50];
  422.     strcpy(nazwisko, os.nazwisko);
  423.     email = new char[50];
  424.     strcpy(email, os.email);
  425.     nast = os.nast;
  426. }
  427.  
  428. osoba::~osoba(){
  429.     delete imie;
  430.     delete nazwisko;
  431.     delete email;
  432.     delete nast;
  433.    
  434. }
  435.  
  436. //=========================================
  437.  
  438. blejtram::blejtram(){
  439.     glowa = NULL;
  440.     glowa_S = NULL;
  441.     glowa_O = NULL;
  442.     glowa_os = NULL;
  443. }
  444.  
  445. blejtram::blejtram(float m, float d, float w, float s){
  446.     glowa->moc = m;
  447.     glowa->dlug = d;
  448.     glowa->wys = w;
  449.     glowa->szer = s;
  450.     glowa->nast = NULL;
  451. }
  452.  
  453. blejtram::blejtram(int c, char *n){
  454.     glowa_S->cena = c;
  455.     strcpy(glowa_S->r_silnik, n);
  456.     glowa_S->nast = NULL;
  457. }
  458.  
  459. blejtram::blejtram(float z, float w){
  460.     glowa_O->waga = w;
  461.     glowa_O->zoom = z;
  462.     glowa_O->nast = NULL;
  463. }
  464.  
  465. blejtram::blejtram(char *i, char*n, char*e) {
  466.     strcpy(glowa_os->imie, i);
  467.     strcpy(glowa_os->nazwisko, n);
  468.     strcpy(glowa_os->email, e);
  469.     glowa_os->nast = NULL;
  470. }
  471.  
  472. void blejtram::dodaj(float m, float d, float w, float s)
  473. {
  474.    
  475.     silnik *wsk = glowa;
  476.     if (!glowa)
  477.     {
  478.         glowa = new silnik();
  479.         wsk = glowa;
  480.     }
  481.     else
  482.     {
  483.         while (wsk->nast != NULL)
  484.         {
  485.             wsk = wsk->nast;
  486.         }
  487.         wsk->nast = new silnik();
  488.         wsk = wsk->nast;
  489.     }
  490.     wsk->dlug = d;
  491.     wsk->moc = m;
  492.     wsk->nast = NULL;
  493.     wsk->szer = s;
  494.     wsk->wys = w;
  495. }
  496.  
  497. void blejtram::dodaj(int c, const char *n)
  498. {
  499.  
  500.     samochod *wsk = glowa_S;
  501.     if (!glowa_S)
  502.     {
  503.         glowa_S = new samochod();
  504.         wsk = glowa_S;
  505.     }
  506.     else
  507.     {
  508.         while (wsk->nast != NULL)
  509.         {
  510.             wsk = wsk->nast;
  511.         }
  512.         wsk->nast = new samochod();
  513.         wsk = wsk->nast;
  514.     }
  515.     wsk->cena = c;
  516.     strcpy(wsk->r_silnik, n);
  517.     wsk->nast = NULL;
  518. }
  519.  
  520. void blejtram::dodaj(float z, float w)
  521. {
  522.  
  523.     optyka *wsk = glowa_O;
  524.     if (!glowa_O)
  525.     {
  526.         glowa_O = new optyka();
  527.         wsk = glowa_O;
  528.     }
  529.     else
  530.     {
  531.         while (wsk->nast != NULL)
  532.         {
  533.             wsk = wsk->nast;
  534.         }
  535.         wsk->nast = new optyka();
  536.         wsk = wsk->nast;
  537.     }
  538.     wsk->zoom = z;
  539.     wsk->nast = NULL;
  540.     wsk->waga = w;
  541. }
  542.  
  543. void blejtram::dodaj(const char *i, const char*n,const char*e)
  544. {
  545.  
  546.     osoba *wsk = glowa_os;
  547.     if (!glowa_os)
  548.     {
  549.         glowa_os = new osoba();
  550.         wsk = glowa_os;
  551.     }
  552.     else
  553.     {
  554.         while (wsk->nast != NULL)
  555.         {
  556.             wsk = wsk->nast;
  557.         }
  558.         wsk->nast = new osoba();
  559.         wsk = wsk->nast;
  560.     }
  561.     strcpy(wsk->imie, i);
  562.     strcpy(wsk->nazwisko, n);
  563.     strcpy(wsk->email, e);
  564.     wsk->nast = NULL;
  565. }
  566.  
  567.  
  568. void blejtram::wypisz()
  569. {
  570.     {
  571.         silnik *wsk = glowa;
  572.         while (wsk != NULL){
  573.             wsk->wypisz();
  574.             wsk = wsk->nast;
  575.         }
  576.     }
  577.  
  578.     cout << endl;
  579.  
  580.     {
  581.     samochod *wsk = glowa_S;
  582.         while (wsk != NULL){
  583.             wsk->wypisz();
  584.             wsk = wsk->nast;
  585.         }
  586.     }
  587.  
  588.     cout << endl;
  589.  
  590.     {
  591.         optyka *wsk = glowa_O;
  592.         while (wsk != NULL){
  593.             wsk->wypisz();
  594.             wsk = wsk->nast;
  595.         }
  596.     }
  597.    
  598.     cout << endl;
  599.  
  600.     {
  601.         osoba *wsk = glowa_os;
  602.         while (wsk != NULL){
  603.             wsk->wypisz();
  604.             wsk = wsk->nast;
  605.         }
  606.     }
  607. }
  608.  
  609. blejtram::~blejtram()
  610. {
  611.     delete glowa;
  612.     delete glowa_S;
  613.     delete glowa_O;
  614.     delete glowa_os;
  615. }
  616.  
  617. int main()
  618. {
  619.     blejtram *blejt = new blejtram;
  620.     blejt->dodaj(1, 1, 1, 1);
  621.     blejt->dodaj(2, 2, 2, 2);
  622.     blejt->dodaj(3, 3, 3, 3);
  623.     blejt->dodaj(4, 4, 4, 4);
  624.  
  625.     blejt->dodaj(1, "V1");
  626.     blejt->dodaj(2, "V2");
  627.     blejt->dodaj(3, "V3");
  628.     blejt->dodaj(4, "V4");
  629.  
  630.     blejt->dodaj(1, 1);
  631.     blejt->dodaj(2, 2);
  632.     blejt->dodaj(3, 3);
  633.     blejt->dodaj(4, 4);
  634.    
  635.     blejt->dodaj("Adam", "Chabros", "adam.chabros006@gmail.com");
  636.     blejt->dodaj("Edward", "Acki", "e.acki@fajny.mail");
  637.     blejt->dodaj("Jan", "Kowalski", "j.kowalski@typowy.mail\0");
  638.     blejt->dodaj("Janusz", "Nowak", "janusz_nowak@nowy.mail\0");
  639.  
  640.     blejt->wypisz();
  641.     printf("\n");
  642.     /*osobowy os(9.5, 5, 'K',20000,"V1");
  643.     osobowy os2(20.9, 2, 'S', 35000, "V8");
  644.     os.wypisz();
  645.     os2.wypisz();
  646.     ciezarowy c(200, 6, 200500, "V9");
  647.     c.wypisz();*/
  648.     lista *list = new lista;
  649.     list->dodaj(9.5, 5, 'K', 20000, "V1");
  650.     list->dodaj(350.5, 12, 350000, "V8");
  651.     list->dodaj(20.9, 2, 'S', 35000, "V8");
  652.     list->dodaj(200, 6, 200500, "V9");
  653.    
  654.     list->wypisz();
  655.     delete list;
  656.     delete blejt;
  657.     return 0;
  658. }
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement