Sunteți pe pagina 1din 4

#include<iostream>

#include<string>
using namespace std;

class GrupDeSocializare
{
private:
const int idUnic;
string denumire;
int nrMesaje;
string* mesaje = NULL;

public:
static int contor;
static string numeAplicatie;

GrupDeSocializare() :idUnic(contor++)
{
this->denumire = "Grup nou";
this->nrMesaje = 0;

//GrupDeSocializare g2(102, "Grupa 1099", 3, mesaje);


GrupDeSocializare(int idUnic, string denumrie, int nrMesaje, string*
mesaje) :idUnic(++contor)
{
this->denumire = denumrie;
this->nrMesaje = nrMesaje;
this->mesaje = new string[nrMesaje];
for (int i = 0; i < nrMesaje; i++) {
this->mesaje[i] = mesaje[i];
}
}

GrupDeSocializare(GrupDeSocializare&g) :idUnic(++contor)
{
this->denumire = g.denumire;
this->nrMesaje = g.nrMesaje;
this->mesaje = new string[g.nrMesaje];
for (int i = 0; i < g.nrMesaje; i++) {
this->mesaje[i] = g.mesaje[i];
}
}

GrupDeSocializare&operator=(GrupDeSocializare&g)
{
if (this->mesaje != NULL)
delete[] this->mesaje;
this->denumire = g.denumire;
this->nrMesaje = g.nrMesaje;
this->mesaje = new string[g.nrMesaje];
for (int i = 0; i < g.nrMesaje; i++) {
this->mesaje[i] = g.mesaje[i];
}
return *this;
}
string getDenumire() {
return this->denumire;
}
int getNrMesaje()
{
return this->nrMesaje;
}

int getDimensiuneaCeluiMaiLungMesaj()
{
int max=mesaje[0].size();
for (int i = 0; i<nrMesaje; i++)
if (max<mesaje[i].size())
max = mesaje[i].size();
cout << max;
return max;

int getIdUnic()
{
return (this->idUnic);
}

void setNrMesaje(int nrmesaje, string*mesaje)


{
this->nrMesaje = nrmesaje;
this->mesaje = new string[nrmesaje];
for (int i = 0; i < nrmesaje; i++) {
this->mesaje[i] = mesaje[i];
}
}

~GrupDeSocializare() {
if (this->mesaje != NULL)
delete[] this->mesaje;
}

friend ostream&operator<<(ostream&out, GrupDeSocializare&g)


{
out << endl;
out << "\nNumele aplicatiei: " << g.numeAplicatie;
out << "\nNumele grupului: " << g.denumire;
out << "\nMesajele: ";
for (int i = 0; i < g.nrMesaje; i++) {
out << g.mesaje[i] << " ";
}
out << endl << endl;
return out;
}

string& operator [](int index)

{
return (this->mesaje[index]);
}
operator string()
{
return this->denumire;
}

bool operator ==(GrupDeSocializare&g) {


if (this->denumire == g.denumire)
return true;
else return false;
}
};

string GrupDeSocializare::numeAplicatie = "n/a";


int GrupDeSocializare::contor = 100;

void main()
{
//Nota 3
cout << "\nCERINTE NOTA 3 ---------------------------" << endl;
GrupDeSocializare g1;//idUnic va fi 100
cout << g1;
cout << g1.getIdUnic();

cout << g1.getDenumire(); //afis "grup nou"


string mesaje[]{ "Salutare tuturor","Sal","Ce faceti?" };
GrupDeSocializare g2(102, "Grupa 1099", 3, mesaje);
cout << "AICI" << g2;
cout << endl << g2.getNrMesaje();//va afisa 3
//Nota 4
cout << "\nCERINTE NOTA 4 ---------------------------" << endl;
GrupDeSocializare g3 = g2;
cout << endl << g3.getIdUnic();//afis 103

//Nota 5
cout << "\nCERINTE NOTA 5 ---------------------------" << endl;
g1 = g3;
cout << endl << g3.getDimensiuneaCeluiMaiLungMesaj();

//Nota 6
cout << "\nCERINTE NOTA 6 ---------------------------" << endl;
string mesajeNoi[]{ "Avem test la POO?","Cand?" };
g3.setNrMesaje(2, mesajeNoi);//schimba vectorul de mesaje
cout << g3.getNrMesaje();
//nota 7
cout << "\nCERINTE NOTA 7 ---------------------------" << endl;
GrupDeSocializare::numeAplicatie = "Whatsapp";
cout << g1; //Numele aplicatiei, numele grupuli si mesajele,fiecare pe cate o
linie;

//nota 8
cout << "\nCERINTE NOTA 8 ---------------------------" << endl;

cout << endl << g3;


g3[1] = "Nevermind"; //schimba al doilea mesaj;
cout << "===============================================" << endl;
cout << g3;
//nota 9
cout << "\nCERINTE NOTA 9 ---------------------------" << endl;
cout << "Denumire grup: " + (string)g3;//operator cast explicit la string
//nota 10
cout << "\nCERINTE NOTA 10 ---------------------------" << endl;
if (g1 == g3)
cout << endl << "\nGrupurile au aceeasi denumire";
else
cout << endl << "\nGrupurile au denumiri diferite";