Advertisement
Guest User

Untitled

a guest
Dec 10th, 2016
81
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
C++ 6.31 KB | None | 0 0
  1. #include <iostream>
  2. #include <cstring>
  3. using namespace std;
  4.  
  5. struct Data{
  6.     int dzien;
  7.     int miesiac;
  8.     int rok;
  9. };
  10. //lista bramek pilkarza
  11. struct Elem{
  12.     Data datamecz;
  13.     int liczbabramek;
  14.     Elem* next;
  15. };
  16.  
  17. class PracownikKlubu{
  18.     protected: //nie jest widoczna ale moze byc dziedziczona
  19.     char imie[100];
  20.     char nazwisko[100];
  21.     double pensjapodstawowa;
  22.     Data datazatrudnienia;
  23.     public:
  24.         void podwyzka(double procent);
  25.         void wypiszdane();
  26.         int stazpracy();
  27.         virtual double obliczpremie()=0;
  28. };
  29.  
  30. class Pilkarz : public PracownikKlubu{
  31.     private:
  32.         Elem* listabramek;
  33.     public:
  34.         Pilkarz(char imie2[],char nazwisko2[], double pensjapodstawowa2, Data datazatrudnienia2); //ewentualnie string zamiast char
  35.         void dodajmecz(Data dmecz, int bramki);
  36.         void wypiszmecz();
  37.         double obliczpremie();
  38.         ~Pilkarz();
  39. };
  40.  
  41. class Trener : public PracownikKlubu{
  42.     private:
  43.     int zwyciestwa, porazki, remisy;
  44.     public:
  45.     Trener(char imie2[], char nazwisko2[], double pensjapodstawowa2, Data datazatrudnienia2, int zwyciestwa2, int porazki2, int remisy2);
  46.     int sumameczy();
  47.     double obliczpremie();
  48.     ~Trener();
  49. };
  50.  
  51. //METODY PracownikKlubu
  52.  
  53. void PracownikKlubu::podwyzka(double procent)
  54. {
  55.     pensjapodstawowa = pensjapodstawowa + (procent * pensjapodstawowa)/100;
  56.      
  57. }
  58.  
  59. int PracownikKlubu::stazpracy()
  60. {
  61.     cout<<imie<<" "<<nazwisko<<endl<<"Lata w klubie od rozpoczecia pracy: ";
  62.     int wynik;
  63.     wynik = 2016 - datazatrudnienia.rok;
  64.     return wynik;
  65. }
  66.  
  67. void PracownikKlubu::wypiszdane()
  68. {
  69.     cout <<imie<<endl<<nazwisko<<endl<<"Pensja: "<<pensjapodstawowa<<"$"<<endl<<"Data zatrudnienia: "<<datazatrudnienia.dzien<<"."<<datazatrudnienia.miesiac<<"."<<datazatrudnienia.rok<<endl<<endl;
  70.    
  71. }
  72.  
  73.  
  74. //METODY Pilkarz
  75.  
  76. Pilkarz :: Pilkarz(char imie2[], char nazwisko2[], double pensjapodstawowa2, Data datazatrudnienia2) //konstruktor
  77. {
  78.     strcpy(imie, imie2);
  79.     strcpy(nazwisko, nazwisko2);
  80.     pensjapodstawowa = pensjapodstawowa2;
  81.     datazatrudnienia.dzien = datazatrudnienia2.dzien;
  82.     datazatrudnienia.miesiac = datazatrudnienia2.miesiac;
  83.     datazatrudnienia.rok = datazatrudnienia2.rok;
  84.    
  85.     listabramek = NULL;
  86. }
  87.  
  88. double Pilkarz :: obliczpremie()
  89. {
  90.     Elem* pom=listabramek;
  91.     int sumabramek=0;
  92.     if (listabramek == NULL)
  93.     {
  94.         return 0;
  95.     }
  96.     while (pom!=NULL)
  97.     {
  98.         sumabramek = sumabramek + pom->liczbabramek;
  99.         pom=pom->next;
  100.     }
  101.    
  102.     return 1000*sumabramek;
  103. }
  104.  
  105. void Pilkarz :: dodajmecz(Data dmecz, int bramki)
  106. {
  107.     Elem* nowymecz = new Elem;
  108.     nowymecz -> datamecz.dzien = dmecz.dzien;
  109.     nowymecz -> datamecz.miesiac = dmecz.miesiac;
  110.     nowymecz -> datamecz.rok = dmecz.rok;
  111.     nowymecz -> liczbabramek = bramki;
  112.     nowymecz -> next = listabramek;
  113.     listabramek = nowymecz;
  114.    
  115. }
  116. void Pilkarz :: wypiszmecz()
  117. {
  118.     if (listabramek == NULL)
  119.     {
  120.         cout <<imie<<" "<<nazwisko<<endl;
  121.         cout <<"Pilkarz nie zagral jeszcze w zadnym meczu"<<endl;
  122.         return ;
  123.     }
  124.     Elem* pom;
  125.     pom = listabramek;
  126.     while (pom!=NULL)
  127.     {
  128.         cout <<imie<<" "<<nazwisko<<endl;
  129.         cout <<"Data meczu "<< pom->datamecz.dzien <<"."<<pom->datamecz.miesiac<<"."<<pom->datamecz.rok<<endl<<"Bramki "<<pom->liczbabramek<<endl;
  130.         pom = pom -> next;
  131.     }
  132.    
  133. }
  134. Pilkarz :: ~Pilkarz() //destruktor
  135. {
  136.     cout << "Wywolano destruktor pilkarza" <<endl;
  137.     while (listabramek!=NULL)
  138.     {
  139.         Elem* usuwany = listabramek;
  140.         listabramek = listabramek -> next;
  141.         cout <<"Usuwam element listy"<<endl;
  142.         delete usuwany;
  143.     }
  144. }
  145.  
  146. //METODY Trener
  147. Trener :: Trener (char imie2[], char nazwisko2[], double pensjapodstawowa2, Data datazatrudnienia2, int zwyciestwa2, int porazki2, int remisy2) //konstruktor
  148. {
  149.     zwyciestwa = zwyciestwa2;
  150.     porazki = porazki2;
  151.     remisy = remisy2;
  152.    
  153.     strcpy(imie, imie2);
  154.     strcpy(nazwisko, nazwisko2);
  155.     pensjapodstawowa = pensjapodstawowa2;
  156.     datazatrudnienia.dzien = datazatrudnienia2.dzien;
  157.     datazatrudnienia.miesiac = datazatrudnienia2.miesiac;
  158.     datazatrudnienia.rok = datazatrudnienia2.rok;
  159.    
  160. }
  161. double Trener::obliczpremie()
  162. {
  163.     double premia;
  164.     premia = 3000*zwyciestwa + (-1000)*porazki + 1000*remisy;
  165.     return premia;
  166. }
  167. int Trener ::sumameczy()
  168. {
  169.     int suma;
  170.     suma = zwyciestwa + porazki + remisy;
  171.     return suma;
  172. }
  173.  
  174. Trener :: ~Trener() //destruktor
  175. {
  176.     cout << "Wywolano destruktor trenera" <<endl;
  177.  
  178. }
  179.  
  180. //OGOLNE
  181.  
  182. void wprowadzmecz(Pilkarz& p)
  183. {
  184.     cout <<"Podaj dzien, miesiac i rok meczu oraz liczbe strzelonych bramek przez pilkarza"<<endl;
  185.     Data d;
  186.     int b;
  187.     cin  >>d.dzien>>d.miesiac>>d.rok>>b;
  188.     p.dodajmecz(d,b);
  189.     return;
  190.    
  191. }
  192.  
  193. //MAIN
  194.  
  195. main()
  196. {
  197.     double premia1;
  198.     Data d1, d2, d3, d4; //daty dolaczenia do klubu
  199.    
  200.     d1.dzien = 17;
  201.     d1.miesiac= 4;
  202.     d1.rok = 1997;
  203.    
  204.     d2.dzien = 6;
  205.     d2.miesiac= 12;
  206.     d2.rok = 2003;
  207.    
  208.     d3.dzien = 3;
  209.     d3.miesiac = 9;
  210.     d3.rok = 2005;
  211.    
  212.     d4.dzien = 10;
  213.     d4.miesiac = 10;
  214.     d4.rok = 2011;
  215.    
  216.    
  217.     Trener t1("Jacek","Magiera",10000,d1,33,11,7);
  218.    
  219.     //trener
  220.     cout <<"KLUB"<<endl<<endl;
  221.     cout<<endl<<"Trenerem zawodnikow jest"<<endl<<endl;
  222.     t1.wypiszdane();
  223.     cout << t1.stazpracy()<<endl;
  224.     cout<<"Liczba meczy pod jego przywodztwem wynosi " <<t1.sumameczy()<<endl;
  225.     cout<<"Premia za wyniki osiagniete z druzyna wynosi "<<t1.obliczpremie()<<"$"<<endl<<endl;
  226.    
  227.     //pilkarze
  228.     Pilkarz p1("Diego","Maradona",500,d2); //pierwszy pilkarz
  229.     Pilkarz p2("Franz", "Beckenbauer",350,d3); //drugi pilkarz
  230.     Pilkarz p3("Kazimierz", "Deyna", 800,d4); //trzeci pilkarz
  231.    
  232.     p1.wypiszdane();
  233.     p2.wypiszdane();
  234.     p3.wypiszdane();
  235.     //podwyzka
  236.     cout <<"Podwyzka pensji Deyny o 75%"<<endl<<endl;
  237.     p3.podwyzka(75);
  238.     p3.wypiszdane();
  239.     //staz pracy zawodnikow
  240.     cout << p1.stazpracy()<<endl;
  241.     cout << p2.stazpracy()<<endl;
  242.     cout << p3.stazpracy()<<endl;
  243.    
  244.     //dodawanie meczów piłkarzom (elementow do listy)
  245.     cout <<endl<<"Wprowadz dwa mecze Diego Maradonie"<<endl;
  246.     wprowadzmecz(p1);
  247.     wprowadzmecz(p1);
  248.     cout <<endl<<"Wprowadz jeden mecz Franzowi Beckenbaurowi"<<endl;
  249.     wprowadzmecz(p2);
  250.    
  251.     p1.wypiszmecz();
  252.     p2.wypiszmecz();
  253.     p3.wypiszmecz();
  254.  
  255.     cout <<endl<<"Wprowadz trzy mecze Kazimierzowi Deynie"<<endl;
  256.     wprowadzmecz(p3);
  257.     wprowadzmecz(p3);
  258.     wprowadzmecz(p3);
  259.    
  260.     p1.wypiszmecz();
  261.     p2.wypiszmecz();
  262.     p3.wypiszmecz();
  263.    
  264.     //premia od strzelonych bramek
  265.    
  266.     cout<<endl<<"Premia za strzelone bramki dla Maradony "<<p1.obliczpremie()<<"$"<<endl;
  267.     cout<<"Premia za strzelone bramki dla Beckenbauera "<<p2.obliczpremie()<<"$"<<endl;
  268.     cout<<"Premia za strzelone bramki dla Deyny "<<p3.obliczpremie()<<"$"<<endl<<endl;
  269.        
  270.    
  271.     return 0;
  272. }
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement