Advertisement
Not a member of Pastebin yet?
Sign Up,
it unlocks many cool features!
- #include<iostream>
- using namespace std;
- class Piesa
- {
- private:
- char* denumire;
- float valoare;
- public:
- Piesa()
- {
- this->denumire = new char[strlen("N/A") + 1];
- strcpy(this->denumire, "N/A");
- this->valoare = 0;
- }
- Piesa(char* denumire, float valoare)
- {
- if (denumire != NULL)
- {
- this->denumire = new char[strlen(denumire) + 1];
- strcpy(this->denumire, denumire);
- }
- else
- this->denumire = NULL;
- this->valoare = valoare;
- }
- Piesa(const Piesa& p)
- {
- if (p.denumire != NULL)
- {
- this->denumire = new char[strlen(p.denumire) + 1];
- strcpy(this->denumire, p.denumire);
- }
- else
- this->denumire = NULL;
- this->valoare = p.valoare;
- }
- Piesa& operator=(const Piesa& p)
- {
- if (this->denumire != NULL)
- delete[] this->denumire;
- if (p.denumire != NULL)
- {
- this->denumire = new char[strlen(p.denumire) + 1];
- strcpy(this->denumire, p.denumire);
- }
- else
- this->denumire = NULL;
- this->valoare = p.valoare;
- return *this;
- }
- ~Piesa()
- {
- if (this->denumire != NULL)
- delete[] this->denumire;
- }
- friend ostream& operator<<(ostream& out, const Piesa& p)
- {
- out << "\nPiesa " << p.denumire << " are valoarea: " << p.valoare;
- return out;
- }
- void setDenumire(char* nume) {
- this->denumire = new char[strlen(nume)+1];
- strcpy(this->denumire , nume);
- }
- void setValoare(float f) {
- this->valoare = f;
- }
- float getValoare() {
- return this->valoare;
- }
- };
- class MijlocFix
- {
- private:
- const int id;
- char* denumire;
- int durataFunctionare;
- Piesa* colectiePiese;
- int nrPiese;
- static int nr;
- public:
- //constructor fara param
- MijlocFix():id(++nr) {
- this->colectiePiese = NULL;
- this->durataFunctionare = 0;
- this->nrPiese = 0;
- }
- //constructor cu toti param
- MijlocFix(int id, int durataFunctionare, Piesa* colectiePiese, int nrPiese):id(id) {
- this->colectiePiese = new Piesa[nrPiese];
- for (int i = 0; i < nrPiese; i++) this->colectiePiese[i] = colectiePiese[i];
- this->durataFunctionare = durataFunctionare;
- this->nrPiese = nrPiese;
- }
- //constructor copiere
- MijlocFix(MijlocFix& m):id(m.id) {
- this->colectiePiese = new Piesa[nrPiese];
- for (int i = 0; i < nrPiese; i++) this->colectiePiese[i] = colectiePiese[i];
- this->durataFunctionare = m.durataFunctionare;
- this->nrPiese = m.nrPiese;
- }
- //operator =
- MijlocFix& operator = (MijlocFix& m) {
- this->colectiePiese = m.colectiePiese;
- this->durataFunctionare = m.durataFunctionare;
- this->nrPiese = m.nrPiese;
- }
- //operator <<
- friend ostream& operator <<(ostream& out,const MijlocFix& m);
- //destructor
- ~MijlocFix() {
- if (this -> colectiePiese != NULL) delete[] this->colectiePiese;
- }
- //+=
- MijlocFix& operator += (const Piesa& p) {
- Piesa* aux = new Piesa[this->nrPiese];
- for (int i = 0; i < this->nrPiese; i++) aux[i] = this->colectiePiese[i];
- this->nrPiese++;
- delete[] this->colectiePiese;
- this->colectiePiese = new Piesa[nrPiese];
- for (int i = 0; i < this->nrPiese-1; i++) colectiePiese[i] = aux[i];
- this->colectiePiese[nrPiese] = p;
- return *this;
- }
- //cast float
- operator float() {
- cout << "asd";
- float total = 0;
- for (int i = 0; i < this->nrPiese; i++) total += this->colectiePiese[i].getValoare();
- return total;
- }
- };
- ostream& operator <<(ostream& out,const MijlocFix& m) {
- out <<"Durata de Functionare: "<< m.durataFunctionare;
- out << endl << "NrPiese: " << m.nrPiese << endl;
- for (int i = 0; i < m.nrPiese; i++)
- {
- out << m.colectiePiese[i];
- }
- return out;
- }
- void main()
- {
- Piesa p1;
- Piesa p2("Piesa2", 20.4f);
- Piesa p3 = p2;
- p3.setDenumire("Piesa3");
- p3.setValoare(35.5f); //de adaugat validari
- cout << p3;
- Piesa piese[] = { p1,p2,p3 };
- MijlocFix mf1(12, 5, piese, 3);//cod,durata, piese,nrPiese
- Piesa p4("Piesa4", 12.0f);
- mf1 += p4;
- cout << "Valoarea totala a pieselor unui mijloc fix este: " << (float)mf1 << endl;
- //Mesajul afisat la generarea exceptiei este: �Index out of range!�
- /*try {
- cout << mf1[6];
- mf1[0] = p4;
- cout << mf1[0];
- }
- catch (exception ex) {
- cout << ex.what() << endl;
- }*/
- //Sa se construiasca clasa PiesaSchimb, derivata public din clasa Piesa,
- //care contine atributul an inlocuire (int).
- /*PiesaSchimb ps1("PiesaS1", 10.0f, 2013);
- PiesaSchimb ps2("PiesaS2", 50.0f, 2013);
- Piesa* pp = &ps1;
- cout << "Valoarea unei piese de schimb este: " << pp->GetValoare() << endl;
- pp = &p1;
- cout << "Valoarea unei piese este: " << pp->GetValoare() << endl;*/
- //vector<MijlocFix*> mijloaceFixe;
- //Sa se declare folosind o colectie de elemente de tip pointer la MijlocFix
- //utilizand clasa STL vector.
- //Sa se adauge elementele mf1 si mf2 in colectie si, utilizand un iterator, sa se
- //parcurga colectia cu afisarea la consola a fiecarui obiect.
- }
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement