#include <iostream>
#include <string.h>
using namespace std;
class TelefonskiBroj
{
private:
char *ime;
int prefiks;
int telefonski_broj;
public:
TelefonskiBroj()
{
ime = NULL;
prefiks = -1;
telefonski_broj = -1;
}
TelefonskiBroj(char *i,int p, int t)
{
ime=new char[strlen(i)+1];
strcpy(ime,i);
prefiks = p;
telefonski_broj=t;
}
int getBroj()
{
return telefonski_broj;
}
int getPrefiks()
{
return prefiks;
}
TelefonskiBroj(const TelefonskiBroj &t)
{
prefiks=t.prefiks;
telefonski_broj=t.telefonski_broj;
ime= new char [strlen(t.ime)+1];
strcpy(ime,t.ime);
}
friend ostream & operator <<(ostream & out, TelefonskiBroj &t)
{
out<<"Telefonski broj: "<< "0" << t.getPrefiks() << " - " <<t.getBroj()<<" Ime:"<<t.ime<<endl;
}
bool operator != (TelefonskiBroj t)
{
return !(prefiks == t.getPrefiks() && telefonski_broj == t.getBroj());
}
~TelefonskiBroj()
{
delete[]ime;
}
};
class Razgovor
{
private:
TelefonskiBroj povik_razgovor;
int vreme_razgovor;
public:
Razgovor() {
vreme_razgovor = -1;
};
Razgovor(TelefonskiBroj p, int v)
{
povik_razgovor=p;
vreme_razgovor=v;
}
Razgovor(const Razgovor &r)
{
povik_razgovor=r.povik_razgovor;
vreme_razgovor=r.vreme_razgovor;
}
int getVremerazgovor()
{
return vreme_razgovor;
}
~Razgovor()
{
}
TelefonskiBroj getBroj(){
return povik_razgovor;
}
friend ostream & operator << (ostream & out, Razgovor &r)
{
out<<"Vkupno vreme: "<<r.getVremerazgovor()/60<<(r.getVremerazgovor()%60)<<endl;
return out;
}
float getMinuti()
{
return getVremerazgovor()/60;
}
};
class TelefonskaSmetka
{
private:
TelefonskiBroj sopstvenik;
Razgovor *razgovori;
int broj_razgovori;
const int pretplata = 500;
public:
TelefonskaSmetka(){
razgovori = NULL;
}
TelefonskaSmetka(TelefonskiBroj s, Razgovor *r, int b)
{
sopstvenik=s;
broj_razgovori=b;
razgovori= new Razgovor[20];
for(int i=0; i<b; i++) // tuka treba da ide do broj na razgovori od vlez, ako ides do 20 , na objektot razgovor ako ima samo 10 na 11 ke ti dade greska posto ne postoi toa
{
razgovori[i]=r[i];
}
}
friend ostream & operator <<(ostream & out, TelefonskaSmetka &s)
{
out<<"Broj napraveni razgovori: "<<s.broj_razgovori<<endl;
out<<"Vkupno naplata"<<s.presmetajVkupnaCena()<<endl;
return out;
}
TelefonskaSmetka(const TelefonskaSmetka &t)//koga kreiras copy constructor sekade stavi const imeNaKlasa& promenliva,,mora const da ima na poceotk
{
sopstvenik=t.sopstvenik;
broj_razgovori=t.broj_razgovori;
razgovori = new Razgovor[20];
for(int i=0; i<broj_razgovori; i++) // isto i tuka treba da ide do broj na kompjuteri
{
razgovori[i] = t.razgovori[i];
}
}
~TelefonskaSmetka()
{
delete[] razgovori;
}
const int getPretplata()
{
return pretplata;
}
int getBrojRazgovori(){
return broj_razgovori;
}
Razgovor getRazgovor(int i ){
return razgovori[i];
}
float presmetajVkupnaCena()
{
float smetka=0;
for(int i=0; i<broj_razgovori; i++)
{
smetka+=razgovori[i].getMinuti()*7+500;
}
return smetka;
}
TelefonskiBroj getSopstvenik(){
return sopstvenik;
}
int getBrojNaRazgovoriKon(TelefonskaSmetka ts){
int brRazgovori = 0;
for(int i = 0; i < broj_razgovori; i++){
if(ts.getSopstvenik() != razgovori[i].getBroj()){
brRazgovori++;
}
}
return brRazgovori;
}
};
int main ()
{
TelefonskiBroj broj("Ivana", 72 , 123456);
TelefonskiBroj nekoj("nekoj", 70, 132654);
cout << broj;
Razgovor razgovori[] = {Razgovor(broj, 12),Razgovor(broj, 123), Razgovor(nekoj, 12)};
TelefonskaSmetka naIvana(broj, razgovori, 3);
cout << naIvana;
}