Beruflich Dokumente
Kultur Dokumente
#include<fstream>
#include<list>
int COD_EROARE_PRET =
1000;
class Cinema {
protected:
char* titlu;
char actori[20];
int pret;
int* bileteVandute;
int nrBilete;
public:
//Cinema() :id(0) daca nu
am static
//{
// this->titlu = NULL;
// strcpy(this->actori,
"Actor1");
// this->pret;
// this->bileteVandute
= NULL;
// this->nrBilete = 0;
//}
Cinema():id(nrSali++)
{
this->titlu = new
char[strlen("titlu")+1];
strcpy(this->titlu,
"titlu");
strcpy(this->actori,
"Actor1");
this->pret=10;
this->bileteVandute
= NULL;
this->nrBilete = 0;
}
~Cinema()
{
if (titlu != NULL)
delete[] this-
>titlu;
if (bileteVandute !=
NULL)
delete[] this-
>bileteVandute;
nrBilete--;
}
Cinema(const Cinema&
c):id(nrBilete++)
{
this->titlu = new
char[strlen(c.titlu) + 1];
strcpy(this->titlu,
c.titlu);
strcpy(this->actori,
c.actori);
this->pret = c.pret;
this->nrBilete =
c.nrBilete;
this->bileteVandute
= new int[c.nrBilete];
for (int i = 0; i <
c.nrBilete; i++)
this-
>bileteVandute[i] =
c.bileteVandute[i];
}
Cinema&
operator=(const Cinema& c)
{
if (titlu != NULL)
delete[] this-
>titlu;
this->titlu = new
char[strlen(c.titlu) + 1];
strcpy(this->titlu,
c.titlu);
strcpy(this->actori,
c.actori);
this->pret = c.pret;
this->nrBilete =
c.nrBilete;
if (bileteVandute !=
NULL)
delete[] this-
>bileteVandute;
this->bileteVandute
= new int[c.nrBilete];
for (int i = 0; i <
c.nrBilete; i++)
this-
>bileteVandute[i] =
c.bileteVandute[i];
return *this;
}
int getPret()
{
return this->pret;
}
char* getActori()
{
return this->actori;
}
int getId()
{
return this->id;
}
void
setBileteVandute(int*
bileteVandute, int nrBilete)
{
if (this-
>bileteVandute != NULL)
delete[] this-
>bileteVandute;
this->nrBilete =
nrBilete; //!
this->bileteVandute
= new int[nrBilete];
for (int i = 0; i <
nrBilete; i++)
this-
>bileteVandute[i] =
bileteVandute[i];
}
//metode
int minimBileteVandute()
{
int minim;
minim =
bileteVandute[0];
for(int
i=0;i<nrBilete;i++)
if
(bileteVandute[i] < minim)
{
minim =
bileteVandute[i];
}
return minim;
}
//supraincarcare
friend ostream&
operator<<(ostream& iesire,
Cinema& c)
{
iesire << c.titlu;
iesire << c.actori;
iesire << c.pret;
iesire << c.nrBilete;
for (int i = 0; i <
c.nrBilete; i++)
iesire << c.actori;
return iesire;
}
Cinema operator+(int
cresterePret) {
friend istream&
operator>>(istream& intrare,
Cinema& c)
{
if (c.titlu != NULL)
delete[] c.titlu;
char buffer[20];
intrare >> buffer;//!
c.titlu = new
char[strlen(buffer) + 1];
strcpy(c.titlu, buffer);
//am uitat
dezalocarea
if (c.bileteVandute !=
NULL)
delete[]
c.bileteVandute;
c.bileteVandute =
new int[c.nrBilete];
for (int i = 0; i <
c.nrBilete; i++)
intrare >>
c.bileteVandute[i]; //bilete
vandute[i sau fara i?
return intrare;
bool operator>(Cinema
c) //< ;<=,>=,!=,==
{
if (this->pret>c.pret)
{
return true;
}
else
{
return false;
}
}
bool operator!()
{
if (this->pret == 0)
{
return true;
}
else
{
return false;
}
}
Cinema operator++ (int)
{
Cinema copie = *this;
this->pret++;
return copie;
}
//Cinema operator++()
//{
// this->pret++; //
this=>pret=this->pret+x;
// return*this;
//}
Cinema operator++()
{
int* bileteVanduteNoi
= new int[nrBilete+1];
if (bileteVandute !=
NULL)
delete[]
bileteVandute;
bileteVanduteNoi[i]=bileteVa
ndute[i];
bileteVanduteNoi[nrBilete] =
10; //adaug un bil cu pret 10
bileteVandute=
bileteVanduteNoi;
nrBilete++;
return *this;
//operator+=
Cinema operator+=(int x)
{
this->pret = this-
>pret + x;
return *this;
}
// fisier scriere
friend ofstream&
operator<<(ofstream&
scriere, Cinema& c)
{
scriere << c.titlu;
scriere << c.actori;
scriere << c.pret;
scriere << c.nrBilete;
for (int i = 0; i <
c.nrBilete; i++)
scriere <<
c.actori;
return scriere;
}
}; int Cinema::nrSali = 0;
class Cinema3d:public
Cinema
{
private:
int pretOchelari;
public:
Cinema3d() :Cinema()
{
this->pretOchelari =
12;
}
Cinema3d(int
pretOchelari, const char*
titlu, const char actori[20],
int pret, int* bileteVandute,
int nrBilete) :Cinema(titlu,
actori, pret, bileteVandute,
nrBilete)
{
this -> pretOchelari =
pretOchelari;
int calculPret()
{
return pret +
pretOchelari;
}
};
class Mall
{
private:
Cinema* cinema;
int nrCinema;
public:
Mall()
{
this->cinema =
NULL;
this->nrCinema = 0;
}
Mall(Cinema* cinema, int
nrCinema)
{
this->nrCinema =
nrCinema;
this->cinema = new
Cinema[nrCinema];
for (int i = 0; i <
nrCinema; i++)
this->cinema[i] =
cinema[i];
}
~Mall()
{
if (cinema != NULL)
delete[] this-
>cinema;
}
Mall(const Mall&m)
{
this->nrCinema =
m.nrCinema;
this->cinema = new
Cinema[m.nrCinema];
for (int i = 0; i <
m.nrCinema; i++)
this->cinema[i] =
m.cinema[i];
}
Mall operator=(const
Mall&m)
{
this->nrCinema =
m.nrCinema;
if (cinema != NULL)
delete[] this-
>cinema;
this->cinema = new
Cinema[m.nrCinema];
for (int i = 0; i <
m.nrCinema; i++)
this->cinema[i] =
m.cinema[i];
return *this;
}
void adaugCinema(Cinema
x)
{
Cinema* cinemaNou =
new Cinema[nrCinema+1];
if (cinema != NULL)
delete[]cinema;
cinemaNou[nrCinema] = x;
cinema =
cinemaNou;
nrCinema++;
}
};
class MallMare
{
private:
list<Cinema>
listaCinema;
public:
MallMare(list<Cinema>
listaCinema)
{
this->listaCinema =
listaCinema;
}
MallMare(const
MallMare& m)
{
this->listaCinema =
m.listaCinema;
}
MallMare&
operator=(const MallMare&
m)
{
this->listaCinema =
m.listaCinema;
return *this;
}
void
adaugCinema(Cinema& c) //
adaun cinema in lista
{
listaCinema.push_back(c);
}
};
void main()
{
Cinema c1;
int bileteVandute[3] =
{ 1,2,3 };
/*int bileteVandute[3];
bileteVandute[0] = 1;
bileteVandute[1] = 2;
bileteVandute[2] = 3;*/
//constructor copiere
Cinema c3 = c2;
c3 = c1;
c2.setPret(20);//de ce nu
apare mesajul ?
c3.setActori("Abfd");
//supraincarcare pre
c1 = ++c2;
cout<<
c2.minimBileteVandute(); //
afisare
//apel CAST
cout << (int)c2;
//apel OP RELATIONALI
>
if (c1 > c2)
{
cout << "pret c1>pret
c2";
}
else
{
cout << "pret
c2>pret c1";
}
//apelare operator+
c1 = c2 + 2;
cout << c1;
//apel index
c2[2] = 1;
cout << c2[2];
try
{
c2.setPret(-20);
}
catch(int e) ////int e!!
{
cout << "nu se
poate";
}
Cinema cinema[3] =
{ c1,c2,c3 }; //obiecte care
exista
Mall m2(cinema, 3);
Mall m3 = m2;
m1 = m3;
m1.adaugCinema(c2);
//int* bileteVandute =
c2.getBileteVandute();
//int nrBilete=c2.//get set
ptr nr bilete->for ptr afisare
c2.setBileteVandute(bileteN
oi, 2); //apel set int*
cout <<
Cinema::getNrSali(); //
list<Cinema>
listaCinema;
listaCinema.push_back(c1);
listaCinema.push_back(c2);
for
(list<Cinema>::iterator it =
listaCinema.begin(); it !=
listaCinema.end(); it++)
cout << *it;
Cinema3d cd1;
cd1 = cd2;
Cinema* cinemap[2] =
{ &c1,&cd2 };
for (int i = 0; i < 2; i++)
cout << cinemap[i]-
>calculPret(); //cinema[i]
pointer m nevoie de ->nu .
cout<<cd1.calculPret();
MallMare
mm1(listaCinema);
mm1.adaugCinema(c1);
char FisierNou[20];
cin >> FisierNou;
ofstream Fisier;
Fisier.open(FisierNou,
ios::out);
Fisier.close();
ofstream FisierBinar;
FisierBinar.open("fisier.dat",
ios::binary | ios::out);
FisierBinar.close();
}