Advertisement
Not a member of Pastebin yet?
Sign Up,
it unlocks many cool features!
- #include<iostream>
- using namespace std;
- char NO_VALUE_AVAILABLE[4] = "NAN";
- class Jurnal
- {
- private:
- char* denumire;
- int nr_numere;
- int* articole_pe_nr;
- const int ISSN;
- float pret;
- public:
- Jurnal();
- Jurnal(char* v_denumire);
- Jurnal(char* v_denumire, int v_nr_numere, int* v_articole_pe_nr, float v_pret);
- ~Jurnal();
- Jurnal(const Jurnal& jurnal);
- Jurnal& operator = (const Jurnal& jurnal);
- friend ostream& operator <<(ostream& out, Jurnal jurnal);
- friend istream& operator >> (istream & in, Jurnal& jurnal);
- //setteri si getteri pt denumire si issn
- void setDenumire(char* v_denumire);
- char* getDenumire();
- };
- int main()
- {
- Jurnal j1;
- cout << j1;
- Jurnal j2("Jurnal");
- cout << j2;
- int jurnal1[3] = { 1,2, 3 };
- Jurnal j3("Jurnal", 3, jurnal1, 25);
- cout << j3;
- Jurnal j4 = j3;
- cout << j4;
- return 0;
- }
- Jurnal::Jurnal() :ISSN(Jurnal::nr_numere++)
- {
- this->denumire = new char[strlen("Denumire") + 1];
- strcpy(this->denumire, "Denumire");
- this->nr_numere = 1;
- this->articole_pe_nr = new int[this->nr_numere];
- for (int i = 0; i <this->nr_numere; i++)
- this->articole_pe_nr[i] = 0;
- this->pret = 0.0;
- }
- Jurnal::Jurnal(char* v_denumire) :ISSN(Jurnal::nr_numere++)
- {
- if (this->denumire == NULL)
- {
- this->denumire = new char[strlen(NO_VALUE_AVAILABLE)];
- strcpy(this->denumire, NO_VALUE_AVAILABLE);
- }
- else
- {
- this->denumire = new char[strlen(v_denumire) + 1];
- strcpy(this->denumire, v_denumire);
- }
- this->nr_numere = 0;
- this->articole_pe_nr = new int[this->nr_numere];
- for (int i = 0; i < this->nr_numere; i++)
- this->articole_pe_nr[i] = 0;
- this->pret = 0.0;
- }
- Jurnal::Jurnal(char* v_denumire, int v_nr_numere, int* v_articole_pe_nr, float v_pret) :ISSN(Jurnal::nr_numere++)
- {
- if (v_denumire == NULL)
- {
- this->denumire = new char[strlen(NO_VALUE_AVAILABLE) + 1];
- strcpy(this->denumire, NO_VALUE_AVAILABLE);
- }
- else
- {
- this->denumire = new char[strlen(v_denumire) + 1];
- strcpy(this->denumire, v_denumire);
- }
- if (v_nr_numere < 0)
- this->nr_numere = 0;
- else
- this->nr_numere = v_nr_numere;
- if (v_articole_pe_nr == NULL)
- {
- this->articole_pe_nr = new int[this->nr_numere];
- for (int i = 0; i < this->nr_numere; i++)
- this->articole_pe_nr[i] = 0;
- }
- else
- {
- this->articole_pe_nr = new int[this->nr_numere];
- for (int i = 0; i < this->nr_numere; i++)
- {
- if (v_articole_pe_nr[i] < 0)
- this->articole_pe_nr[i] = 0;
- else
- this->articole_pe_nr[i] = v_articole_pe_nr[i];
- }
- }
- if (v_pret < 0)
- this->pret = 0;
- else
- this->pret = v_pret;
- }
- Jurnal::Jurnal(const Jurnal& jurnal) :ISSN(jurnal.ISSN)
- {
- this->denumire = new char[strlen(jurnal.denumire) + 1];
- strcpy(this->denumire, jurnal.denumire);
- this->nr_numere = jurnal.nr_numere;
- this->articole_pe_nr = new int[this->nr_numere];
- for (int i = 0; i < this->nr_numere; i++)
- this->articole_pe_nr[i] = jurnal.articole_pe_nr[i];
- this->pret = jurnal.pret;
- }
- Jurnal& Jurnal:: operator=(const Jurnal& jurnal)
- {
- if (jurnal.denumire != NULL)
- delete[] jurnal.denumire;
- this->denumire = new char[strlen(jurnal.denumire) + 1];
- strcpy(this->denumire, jurnal.denumire);
- this->nr_numere = jurnal.nr_numere;
- this->articole_pe_nr = new int[this->nr_numere];
- if (jurnal.articole_pe_nr != NULL)
- delete[] jurnal.articole_pe_nr;
- for (int i = 0; i < this->nr_numere; i++)
- this->articole_pe_nr[i] = jurnal.articole_pe_nr[i];
- this->pret = jurnal.pret;
- return *this;
- }
- Jurnal :: ~Jurnal()
- {
- if (this->denumire != NULL)
- delete[] this->denumire;
- if (this->articole_pe_nr != NULL)
- delete[] this->articole_pe_nr;
- cout << "Apel destructor.";
- }
- ostream& operator << (ostream& out, Jurnal jurnal)
- {
- out << "Afisare date jurnal: " << endl;
- out << "Denumire: " << jurnal.denumire << endl;
- out << "Nr. de numere:" << jurnal.nr_numere << endl;
- out << "Articole pe numar: " << endl;
- for (int i = 0; i < jurnal.nr_numere; i++) {
- cout << "Articolul " << i << ": " << jurnal.articole_pe_nr[i] << endl;
- }
- out << "Pret: " << jurnal.pret << endl;
- return out;
- }
- istream& operator >> (istream& in, Jurnal& jurnal)
- {
- cout << "Denumire: ";
- char aux[50];
- in.getline(aux, 50);
- if (jurnal.denumire != NULL)
- delete[] jurnal.denumire;
- jurnal.denumire = new char[strlen(aux) + 1];
- strcpy(jurnal.denumire, aux);
- cout << "Nr de numere: ";
- int v_nr_numere;
- in >> v_nr_numere;
- if (v_nr_numere < 0)
- jurnal.nr_numere = 0;
- else
- jurnal.nr_numere = v_nr_numere;
- return in;
- }
- void Jurnal::setDenumire(char* v_denumire)
- {
- if (this->denumire != NULL)
- delete[] this->denumire;
- if (v_denumire == NULL)
- {
- this->denumire = new char[strlen(NO_VALUE_AVAILABLE) + 1];
- strcpy(this->denumire, NO_VALUE_AVAILABLE);
- }
- else
- {
- this->denumire = new char[strlen(v_denumire) + 1];
- strcpy(this->denumire, v_denumire);
- }
- }
- char* Jurnal::getDenumire()
- {
- return this->denumire;
- }
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement