Zadatak je dat u prilogu!
A kod koji sam napisao :
Code:
#include <iostream>
using namespace std;
class Datum
{
public:
Datum(int d=1, int m=1, int g=2000)
{
gg = g;
mm = (m>0 && m<=12) ? m : 1;
dd = provjeriDan(d);
}
void print() const
{ cout<<dd<<'.'<<mm<<'.'<<gg<<'.'<<endl;}
private:
int dd, mm, gg;
int provjeriDan(int dan)
{
static const int m[13] =
{0,31,28,31,30,31,30,31,31,30,31,30,31};
if (dan>0 && dan<=m[mm]) return dan;
if (mm==2 && dan==29 &&
(gg%400==0 || (gg%4==0 && gg%100!=0)))
return dan;
return 1;
}
};
class Vozilo
{
friend int operator >( Vozilo &v1, Vozilo &v2);
public:
Vozilo(char *regB, int godP,int d,int m,int g): reg_datum(d,m,g)
{
reg_broj=new char [strlen(regB)+1];
strcpy(reg_broj,regB);
god_proizvodnje=godP;
}
void registracija(int reg_datum);
virtual void ispis()=0;
~Vozilo() { delete [] reg_broj; }
protected:
char *reg_broj;
int god_proizvodnje;
Datum reg_datum;
};
int operator>( Vozilo &v1, Vozilo &v2 )
{
if (v1.god_proizvodnje>v2.god_proizvodnje) return v1.god_proizvodnje;
else return v2.god_proizvodnje;
}
void Vozilo::registracija(int regD)
{
reg_datum=regD;
}
class Putnicko:public Vozilo
{
public:
Putnicko(int brP=0,char *regB, int godP,int d,int m,int g):Vozilo(regB,godP,d,m,g)
{ broj_putnika=brP; }
protected:
int broj_putnika;
};
class Teretno:public Vozilo
{
public:
Teretno(long n=0,char *f,char *regB, int godP,int d,int m,int g):Vozilo(regB,godP,d,m,g)
{
nosivost=n;
firma=new char [strlen(f)+1];
strcpy(firma,f);
}
~Teretno() { delete [] firma; }
protected:
long nosivost;
char *firma;
};
class Automobil:public Putnicko
{
public:
Automobil(char *i,char *p,int brP,char *regB, int godP,int d,int m,int g):Putnicko(brP,regB,godP,d,m,g)
{
vlasnik_ime=new char[strlen(i)+1];
strcpy(vlasnik_ime,i);
vlasnik_prezime=new char[strlen(p)+1];
strcpy(vlasnik_prezime,p);
}
void ispis();
~Automobil() { delete [] vlasnik_ime; delete [] vlasnik_prezime; }
protected:
char *vlasnik_ime;
char *vlasnik_prezime;
};
void Automobil::ispis()
{
cout<<"automobil reg.ozn. "<<Automobil::reg_broj<<endl;
cout<<"datum registracije: "<<Automobil::reg_datum<<endl;
cout<<"godina proizvodnje: "<<Automobil::god_proizvodnje<<endl;
cout<<"vlasnik: "<<Automobil::vlasnik_ime<<" "<<Automobil::vlasnik_prezime<<endl;
}
main()
{
Automobil a("Marko","Markovic",5,"802-j-318",1998,1,2,2010);
Vozilo *v1; v1=&a;
v1->ispis();
system("pause");
}
#include <iostream>
using namespace std;
class Datum
{
public:
Datum(int d=1, int m=1, int g=2000)
{
gg = g;
mm = (m>0 && m<=12) ? m : 1;
dd = provjeriDan(d);
}
void print() const
{ cout<<dd<<'.'<<mm<<'.'<<gg<<'.'<<endl;}
private:
int dd, mm, gg;
int provjeriDan(int dan)
{
static const int m[13] =
{0,31,28,31,30,31,30,31,31,30,31,30,31};
if (dan>0 && dan<=m[mm]) return dan;
if (mm==2 && dan==29 &&
(gg%400==0 || (gg%4==0 && gg%100!=0)))
return dan;
return 1;
}
};
class Vozilo
{
friend int operator >( Vozilo &v1, Vozilo &v2);
public:
Vozilo(char *regB, int godP,int d,int m,int g): reg_datum(d,m,g)
{
reg_broj=new char [strlen(regB)+1];
strcpy(reg_broj,regB);
god_proizvodnje=godP;
}
void registracija(int reg_datum);
virtual void ispis()=0;
~Vozilo() { delete [] reg_broj; }
protected:
char *reg_broj;
int god_proizvodnje;
Datum reg_datum;
};
int operator>( Vozilo &v1, Vozilo &v2 )
{
if (v1.god_proizvodnje>v2.god_proizvodnje) return v1.god_proizvodnje;
else return v2.god_proizvodnje;
}
void Vozilo::registracija(int regD)
{
reg_datum=regD;
}
class Putnicko:public Vozilo
{
public:
Putnicko(int brP=0,char *regB, int godP,int d,int m,int g):Vozilo(regB,godP,d,m,g)
{ broj_putnika=brP; }
protected:
int broj_putnika;
};
class Teretno:public Vozilo
{
public:
Teretno(long n=0,char *f,char *regB, int godP,int d,int m,int g):Vozilo(regB,godP,d,m,g)
{
nosivost=n;
firma=new char [strlen(f)+1];
strcpy(firma,f);
}
~Teretno() { delete [] firma; }
protected:
long nosivost;
char *firma;
};
class Automobil:public Putnicko
{
public:
Automobil(char *i,char *p,int brP,char *regB, int godP,int d,int m,int g):Putnicko(brP,regB,godP,d,m,g)
{
vlasnik_ime=new char[strlen(i)+1];
strcpy(vlasnik_ime,i);
vlasnik_prezime=new char[strlen(p)+1];
strcpy(vlasnik_prezime,p);
}
void ispis();
~Automobil() { delete [] vlasnik_ime; delete [] vlasnik_prezime; }
protected:
char *vlasnik_ime;
char *vlasnik_prezime;
};
void Automobil::ispis()
{
cout<<"automobil reg.ozn. "<<Automobil::reg_broj<<endl;
cout<<"datum registracije: "<<Automobil::reg_datum<<endl;
cout<<"godina proizvodnje: "<<Automobil::god_proizvodnje<<endl;
cout<<"vlasnik: "<<Automobil::vlasnik_ime<<" "<<Automobil::vlasnik_prezime<<endl;
}
main()
{
Automobil a("Marko","Markovic",5,"802-j-318",1998,1,2,2010);
Vozilo *v1; v1=&a;
v1->ispis();
system("pause");
}