Advertisement
Guest User

Untitled

a guest
May 27th, 2017
55
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
C++ 3.22 KB | None | 0 0
  1. #include <iostream>
  2. #include <cmath>
  3. #include <iomanip>
  4.  
  5. using namespace std;
  6.  
  7. class Tim{
  8.     char ime[20];
  9.     int broj_odigranih,broj_pobjeda,broj_nerijesenih,broj_poraza,broj_datih,broj_primljenih,broj_poena;
  10.     public:
  11.     Tim(const char ime[]):broj_odigranih(0),broj_pobjeda(0),broj_nerijesenih(0),broj_poraza(0),broj_datih(0),broj_primljenih(0),broj_poena(0){
  12.         strcpy(Tim::ime,ime);
  13.         };
  14.     void ObradiUtakmicu(int broj_datih, int broj_primljenih);
  15.     const char *DajImeTima() const{ return ime; }
  16.     int DajBrojPoena() const{ return broj_poena; }
  17.     int DajGolRazliku() const{ return abs(broj_datih-broj_primljenih); }
  18.     void IspisiPodatke() const;
  19. };
  20.  
  21. void Tim::ObradiUtakmicu(int broj_datih,int broj_primljenih){
  22.     broj_odigranih++;
  23.     if(broj_datih>broj_primljenih) {
  24.         broj_poena+=3;
  25.         broj_pobjeda+=1;
  26.         Tim::broj_datih+=broj_datih;
  27.         Tim::broj_primljenih+=broj_primljenih;
  28.     }
  29.     else if(broj_datih==broj_primljenih) {
  30.         broj_nerijesenih++;
  31.         broj_poena+=1;
  32.         Tim::broj_datih+=broj_datih;
  33.         Tim::broj_primljenih+=broj_primljenih;
  34.     }
  35.     else if(broj_primljenih>broj_datih){
  36.         broj_poraza++;
  37.         Tim::broj_datih+=broj_datih;
  38.         Tim::broj_primljenih+=broj_primljenih;
  39.     }
  40. }
  41.  
  42. void Tim::IspisiPodatke() const {
  43.     cout<<endl<<DajImeTima()<<setw(20)<<broj_odigranih<<setw(4)<<broj_pobjeda<<setw(4)<<broj_nerijesenih<<setw(4)<<broj_poraza<<setw(4)
  44.     <<broj_datih<<setw(4)<<broj_primljenih<<setw(4)<<broj_poena;
  45. }
  46.  
  47.  
  48. class Liga{
  49.     const int max_br_timova;
  50.     int broj_timova;
  51.     Tim **timovi;
  52.     static bool VeciGolRazlike(Tim *tim1, Tim *tim2){
  53.         return tim1->DajGolRazliku()>tim2->DajGolRazliku();
  54.     }
  55.     public:
  56.     explicit Liga(int velicina_lige): timovi(new Tim*[velicina_lige]),max_br_timova(velicina_lige){} ;
  57.     ~Liga();
  58.     void DodajNoviTim(const char ime_tima[]);
  59.     void RegistrirajUtakmicu(const char tim1[], const char tim2[], int rezultat1, int rezultat2);
  60.     void IspisiTabelu();
  61. };
  62.  
  63. Liga::~Liga(){
  64.     for(int i=0; i<broj_timova; i++) delete timovi[i];
  65.     delete[] timovi;
  66. }
  67.  
  68. void Liga::DodajNoviTim(const char ime_tima[]){
  69.     if(broj_timova>max_br_timova) throw "Previse timova!";
  70.     Tim tim1(ime_tima);
  71.     Tim *pok;
  72.     pok=&tim1;
  73.     timovi[broj_timova++]=pok;
  74. }
  75.  
  76. void Liga::RegistrirajUtakmicu(const char tim1[], const char tim2[], int rezultat1, int rezultat2){
  77.     for(int i=0; i<broj_timova; i++){
  78.         if(!strcmp(timovi[i]->DajImeTima(),tim1)) timovi[i]->ObradiUtakmicu(rezultat1,rezultat2);
  79.         if(!strcmp(timovi[i]->DajImeTima(),tim2)) timovi[i]->ObradiUtakmicu(rezultat2,rezultat1);
  80.     }
  81. }
  82.  
  83. void Liga::IspisiTabelu(){
  84.     sort(&timovi[0],&timovi[broj_timova],VeciGolRazlike);
  85.     for(int i=0; i<broj_timova; i++){
  86.         timovi[i]->IspisiPodatke();
  87.     }
  88.  
  89. }
  90.  
  91. int main()
  92. {
  93.     try{
  94.         Liga liga1(6);
  95.         liga1.DodajNoviTim("Sarajevo");
  96.         liga1.DodajNoviTim("Velez");
  97.         liga1.DodajNoviTim("Zeljeznicar");
  98.         liga1.DodajNoviTim("Celik");
  99.         liga1.DodajNoviTim("Jedinstvo");
  100.         liga1.DodajNoviTim("Sloboda");
  101.     }
  102.     catch(const char greska[]){
  103.         cout<<endl<<greska;
  104.     }
  105.     return 0;
  106. }
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement