24.11.2.24011830. Napisati klasu “Tim“ koja predstavlja jedan tim u fudbalskom prvenstvu. Klasa “Tim“ treba posjedovati privatne atribute nazvane “ime”, “broj_odigranih”, “broj_pobjeda”, “broj_nerijesenih”, “broj_poraza”, “broj_datih”, “broj_primljenih“ i “broj_poena“ koji sadrže redom naziv tima (do 20 znakova), broj odigranih utakmica, broj pobjeda, broj neriješenih utakmica, broj poraza, ukupan broj datih i primljenih golova, kao i broj poena za razmatrani tim. Klasa treba da ima sljedeći interfejs:
Tim(const char ime[]);
void ObradiUtakmicu(int broj_datih, int broj_primljenih);
const char *ImeTima() const;
int BrojPoena() const;
int GolRazlika() const;
void IspisiPodatke() const;
Konstruktor treba da postavi ime tima na vrijednost zadanu parametrom, a sve ostale atribute klase na nulu. Metoda “ObradiUtakmicu“ treba da na osnovu rezultata utakmice koji joj se prenosi kao parametar (u vidu broja datih i primljenih golova sa posmatrane utakmice) ažurira ne samo atribute koje broje golove, nego i atribute koji broje odigrane utakmice, broj pobjeda, poraza i neriješenih utakmica, kao i broj bodova. Pri tome se za pobjedu dodjeljuju 3 boda, za neriješen rezultat 1 bod, a za poraz ništa. Metode “ImeTima”, “BrojPoena“ i “GolRazlika“ treba da vrate respektivno ime tima (preciznije, pokazivač na prvi znak imena), broj poena kao i gol razliku (tj. razliku između ukupnog broja datih i primljenih golova) za posmatrani tim (ove metode implementirati unutar deklaracije klase). Konačno, metoda “IspisiPodatke“ treba da ispiše na ekran sve podatke o timu u jednom redu, i to sljedećim redom: ime tima, broj utakmica, broj pobjeda, broj neriješenih utakmica, broj poraza, broj datih golova, broj primljenih golova i broj poena. Za ime tima zauzeti prostor od 20 znakova, a za sve brojne podatke prostor od 4 znaka na ekranu. Napisati i kratki testni program u kojem ćete demonstrirati napisanu klasu.
Napomena: Ovaj program ne treba prepisivati u svesku, jer je sljedeći program njegova nadogradnja!

Opis rješenja:

Listing programa:

#include <iostream>
#include <conio.h>
#include <cstring>

using namespace std;

class Tim{

char ime[20];
int broj_odigranih,broj_pobjeda,
broj_nerijesenih,broj_poraza,
broj_datih,broj_primljenih,broj_poena;
public:
Tim(const char ime[]){
    strcpy(Tim::ime,ime);
    broj_odigranih=broj_pobjeda=0;
    broj_nerijesenih=broj_poraza=0;
    broj_datih=broj_primljenih=broj_poena=0;
    }
void ObradiUtakmicu(int broj_datih, int broj_primljenih);
const char *ImeTima() const{
    return &ime[0];
    }
int BrojPoena() const{
    return broj_poena;
    }
int GolRazlika() const{
    return broj_datih-broj_primljenih;
    }
void IspisiPodatke() const;
};

void Tim::ObradiUtakmicu(int broj_datih, int broj_primljenih){
broj_odigranih++;
if(broj_datih>broj_primljenih){
    broj_pobjeda++;
    broj_poena+=3;
    }
else if(broj_datih<broj_primljenih)
    broj_poraza++;
else{
    broj_nerijesenih++;
    broj_poena+=1;
    }
Tim::broj_datih+=broj_datih;
Tim::broj_primljenih+=broj_primljenih;  
}
    
void Tim::IspisiPodatke()const{
cout.width(20);cout<<ImeTima();
cout.width(4);cout<<broj_odigranih;
cout.width(4);cout<<broj_pobjeda;
cout.width(4);cout<<broj_nerijesenih;
cout.width(4);cout<<broj_poraza;
cout.width(4);cout<<broj_datih;
cout.width(4);cout<<broj_primljenih;
cout.width(4);cout<<BrojPoena();
}


int main(){
//Ovde testirati klasu...
getch();
return 0;
}   

Ispis na ekranu:

Riješeni zadaci 2    Index