Skip to content

Instantly share code, notes, and snippets.

@MarinMario
Created July 8, 2025 03:14
Show Gist options
  • Select an option

  • Save MarinMario/4f2561632edf13fe2bd2e588fd71c6f1 to your computer and use it in GitHub Desktop.

Select an option

Save MarinMario/4f2561632edf13fe2bd2e588fd71c6f1 to your computer and use it in GitHub Desktop.
#include<iostream>
#include<string>
#include<stdexcept>
using namespace std;
class SalaEvenimente {
private:
string numeSala;
int numarInvitati;
float pretBilet;
int* varsteInvitati;
public:
SalaEvenimente() {
this->numeSala = "";
this->numarInvitati = 0;
this->pretBilet = 0;
this->varsteInvitati = nullptr;
}
SalaEvenimente(string numeSala, int numarInvitati, float pretBilet, int* varsteInvitati) {
this->numeSala = numeSala;
this->numarInvitati = numarInvitati;
this->pretBilet = pretBilet;
this->varsteInvitati = new int[numarInvitati];
for(int i = 0; i < numarInvitati; i++) {
this->varsteInvitati[i] = varsteInvitati[i];
}
}
SalaEvenimente(const SalaEvenimente& s) {
this->numeSala = s.numeSala;
this->numarInvitati = s.numarInvitati;
this->pretBilet = s.pretBilet;
if(s.varsteInvitati == nullptr) {
this->varsteInvitati = nullptr;
return;
}
this->varsteInvitati = new int[this->numarInvitati];
for(int i = 0; i < this->numarInvitati; i++) {
this->varsteInvitati[i] = s.varsteInvitati[i];
}
}
SalaEvenimente& operator=(const SalaEvenimente& s) {
this->numeSala = s.numeSala;
this->numarInvitati = s.numarInvitati;
this->pretBilet = s.pretBilet;
if(s.varsteInvitati == nullptr) {
this->varsteInvitati = nullptr;
return *this;
}
this->varsteInvitati = new int[this->numarInvitati];
for(int i = 0; i < this->numarInvitati; i++) {
this->varsteInvitati[i] = s.varsteInvitati[i];
}
return *this;
}
friend ostream& operator<<(ostream& out, const SalaEvenimente& s) {
out << s.numeSala << ", " << s.numarInvitati << ", " << s.pretBilet << ", ";
if(s.varsteInvitati == nullptr) {
out << "nu exista varste invitati";
return out;
}
for(int i = 0; i < s.numarInvitati; i++) {
out << s.varsteInvitati[i] << " ";
}
return out;
}
string getNumeSala() {
return this->numeSala;
}
void setNumeSala(string numeSala) {
this->numeSala = numeSala;
}
int operator [](int index) const {
if(index >= numarInvitati || index < 0)
throw invalid_argument("indexul trebuie sa fie mai mare ca 0 si mai mic ca numarInvitati.");
return varsteInvitati[index];
}
float calculeazaVanzari() {
return this->numarInvitati * this->pretBilet;
}
};
int main() {
int* varsteInvitatiA = new int[2];
varsteInvitatiA[0] = 21;
varsteInvitatiA[1] = 19;
SalaEvenimente a("Sala 2", 2, 25, varsteInvitatiA);
cout << a.getNumeSala() << "\n";
a.setNumeSala("Sala 3");
cout << a.getNumeSala() << "\n";
SalaEvenimente b;
b = a;
cout << b << "\n";
cout << b[1] << "\n";
cout << b.calculeazaVanzari() << "\n";
}
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment