Advertisement
Not a member of Pastebin yet?
Sign Up,
it unlocks many cool features!
- #include <iostream>
- #include <cstring>
- using namespace std;
- struct Data{
- int dzien;
- int miesiac;
- int rok;
- };
- //lista bramek pilkarza
- struct Elem{
- Data datamecz;
- int liczbabramek;
- Elem* next;
- };
- class PracownikKlubu{
- protected: //nie jest widoczna ale moze byc dziedziczona
- char imie[100];
- char nazwisko[100];
- double pensjapodstawowa;
- Data datazatrudnienia;
- public:
- void podwyzka(double procent);
- void wypiszdane();
- int stazpracy();
- virtual double obliczpremie()=0;
- };
- class Pilkarz : public PracownikKlubu{
- private:
- Elem* listabramek;
- public:
- Pilkarz(char imie2[],char nazwisko2[], double pensjapodstawowa2, Data datazatrudnienia2); //ewentualnie string zamiast char
- void dodajmecz(Data dmecz, int bramki);
- void wypiszmecz();
- double obliczpremie();
- ~Pilkarz();
- };
- class Trener : public PracownikKlubu{
- private:
- int zwyciestwa, porazki, remisy;
- public:
- Trener(char imie2[], char nazwisko2[], double pensjapodstawowa2, Data datazatrudnienia2, int zwyciestwa2, int porazki2, int remisy2);
- int sumameczy();
- double obliczpremie();
- ~Trener();
- };
- //METODY PracownikKlubu
- void PracownikKlubu::podwyzka(double procent)
- {
- pensjapodstawowa = pensjapodstawowa + (procent * pensjapodstawowa)/100;
- }
- int PracownikKlubu::stazpracy()
- {
- cout<<imie<<" "<<nazwisko<<endl<<"Lata w klubie od rozpoczecia pracy: ";
- int wynik;
- wynik = 2016 - datazatrudnienia.rok;
- return wynik;
- }
- void PracownikKlubu::wypiszdane()
- {
- cout <<imie<<endl<<nazwisko<<endl<<"Pensja: "<<pensjapodstawowa<<"$"<<endl<<"Data zatrudnienia: "<<datazatrudnienia.dzien<<"."<<datazatrudnienia.miesiac<<"."<<datazatrudnienia.rok<<endl<<endl;
- }
- //METODY Pilkarz
- Pilkarz :: Pilkarz(char imie2[], char nazwisko2[], double pensjapodstawowa2, Data datazatrudnienia2) //konstruktor
- {
- strcpy(imie, imie2);
- strcpy(nazwisko, nazwisko2);
- pensjapodstawowa = pensjapodstawowa2;
- datazatrudnienia.dzien = datazatrudnienia2.dzien;
- datazatrudnienia.miesiac = datazatrudnienia2.miesiac;
- datazatrudnienia.rok = datazatrudnienia2.rok;
- listabramek = NULL;
- }
- double Pilkarz :: obliczpremie()
- {
- Elem* pom=listabramek;
- int sumabramek=0;
- if (listabramek == NULL)
- {
- return 0;
- }
- while (pom!=NULL)
- {
- sumabramek = sumabramek + pom->liczbabramek;
- pom=pom->next;
- }
- return 1000*sumabramek;
- }
- void Pilkarz :: dodajmecz(Data dmecz, int bramki)
- {
- Elem* nowymecz = new Elem;
- nowymecz -> datamecz.dzien = dmecz.dzien;
- nowymecz -> datamecz.miesiac = dmecz.miesiac;
- nowymecz -> datamecz.rok = dmecz.rok;
- nowymecz -> liczbabramek = bramki;
- nowymecz -> next = listabramek;
- listabramek = nowymecz;
- }
- void Pilkarz :: wypiszmecz()
- {
- if (listabramek == NULL)
- {
- cout <<imie<<" "<<nazwisko<<endl;
- cout <<"Pilkarz nie zagral jeszcze w zadnym meczu"<<endl;
- return ;
- }
- Elem* pom;
- pom = listabramek;
- while (pom!=NULL)
- {
- cout <<imie<<" "<<nazwisko<<endl;
- cout <<"Data meczu "<< pom->datamecz.dzien <<"."<<pom->datamecz.miesiac<<"."<<pom->datamecz.rok<<endl<<"Bramki "<<pom->liczbabramek<<endl;
- pom = pom -> next;
- }
- }
- Pilkarz :: ~Pilkarz() //destruktor
- {
- cout << "Wywolano destruktor pilkarza" <<endl;
- while (listabramek!=NULL)
- {
- Elem* usuwany = listabramek;
- listabramek = listabramek -> next;
- cout <<"Usuwam element listy"<<endl;
- delete usuwany;
- }
- }
- //METODY Trener
- Trener :: Trener (char imie2[], char nazwisko2[], double pensjapodstawowa2, Data datazatrudnienia2, int zwyciestwa2, int porazki2, int remisy2) //konstruktor
- {
- zwyciestwa = zwyciestwa2;
- porazki = porazki2;
- remisy = remisy2;
- strcpy(imie, imie2);
- strcpy(nazwisko, nazwisko2);
- pensjapodstawowa = pensjapodstawowa2;
- datazatrudnienia.dzien = datazatrudnienia2.dzien;
- datazatrudnienia.miesiac = datazatrudnienia2.miesiac;
- datazatrudnienia.rok = datazatrudnienia2.rok;
- }
- double Trener::obliczpremie()
- {
- double premia;
- premia = 3000*zwyciestwa + (-1000)*porazki + 1000*remisy;
- return premia;
- }
- int Trener ::sumameczy()
- {
- int suma;
- suma = zwyciestwa + porazki + remisy;
- return suma;
- }
- Trener :: ~Trener() //destruktor
- {
- cout << "Wywolano destruktor trenera" <<endl;
- }
- //OGOLNE
- void wprowadzmecz(Pilkarz& p)
- {
- cout <<"Podaj dzien, miesiac i rok meczu oraz liczbe strzelonych bramek przez pilkarza"<<endl;
- Data d;
- int b;
- cin >>d.dzien>>d.miesiac>>d.rok>>b;
- p.dodajmecz(d,b);
- return;
- }
- //MAIN
- main()
- {
- double premia1;
- Data d1, d2, d3, d4; //daty dolaczenia do klubu
- d1.dzien = 17;
- d1.miesiac= 4;
- d1.rok = 1997;
- d2.dzien = 6;
- d2.miesiac= 12;
- d2.rok = 2003;
- d3.dzien = 3;
- d3.miesiac = 9;
- d3.rok = 2005;
- d4.dzien = 10;
- d4.miesiac = 10;
- d4.rok = 2011;
- Trener t1("Jacek","Magiera",10000,d1,33,11,7);
- //trener
- cout <<"KLUB"<<endl<<endl;
- cout<<endl<<"Trenerem zawodnikow jest"<<endl<<endl;
- t1.wypiszdane();
- cout << t1.stazpracy()<<endl;
- cout<<"Liczba meczy pod jego przywodztwem wynosi " <<t1.sumameczy()<<endl;
- cout<<"Premia za wyniki osiagniete z druzyna wynosi "<<t1.obliczpremie()<<"$"<<endl<<endl;
- //pilkarze
- Pilkarz p1("Diego","Maradona",500,d2); //pierwszy pilkarz
- Pilkarz p2("Franz", "Beckenbauer",350,d3); //drugi pilkarz
- Pilkarz p3("Kazimierz", "Deyna", 800,d4); //trzeci pilkarz
- p1.wypiszdane();
- p2.wypiszdane();
- p3.wypiszdane();
- //podwyzka
- cout <<"Podwyzka pensji Deyny o 75%"<<endl<<endl;
- p3.podwyzka(75);
- p3.wypiszdane();
- //staz pracy zawodnikow
- cout << p1.stazpracy()<<endl;
- cout << p2.stazpracy()<<endl;
- cout << p3.stazpracy()<<endl;
- //dodawanie meczów piłkarzom (elementow do listy)
- cout <<endl<<"Wprowadz dwa mecze Diego Maradonie"<<endl;
- wprowadzmecz(p1);
- wprowadzmecz(p1);
- cout <<endl<<"Wprowadz jeden mecz Franzowi Beckenbaurowi"<<endl;
- wprowadzmecz(p2);
- p1.wypiszmecz();
- p2.wypiszmecz();
- p3.wypiszmecz();
- cout <<endl<<"Wprowadz trzy mecze Kazimierzowi Deynie"<<endl;
- wprowadzmecz(p3);
- wprowadzmecz(p3);
- wprowadzmecz(p3);
- p1.wypiszmecz();
- p2.wypiszmecz();
- p3.wypiszmecz();
- //premia od strzelonych bramek
- cout<<endl<<"Premia za strzelone bramki dla Maradony "<<p1.obliczpremie()<<"$"<<endl;
- cout<<"Premia za strzelone bramki dla Beckenbauera "<<p2.obliczpremie()<<"$"<<endl;
- cout<<"Premia za strzelone bramki dla Deyny "<<p3.obliczpremie()<<"$"<<endl<<endl;
- return 0;
- }
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement