Advertisement
Not a member of Pastebin yet?
Sign Up,
it unlocks many cool features!
- #include<iostream>
- #include<string>
- #include<fstream>
- using namespace std;
- class RevizieAuto {
- private:
- string nume = ":)";
- int* costRevizii = NULL;
- int revizii = 0;
- const int id=0;
- static int k;
- public:
- RevizieAuto():id(++this->k)
- {
- cout << "default constructor " << endl;
- this->revizii = 0;
- }
- void setRevizii(int revizii)
- {
- if (revizii > this->revizii)
- cout << "prea multe revizii" << endl;
- else
- this->revizii = revizii;
- }
- int getRevizii()
- {
- return this->revizii;
- }
- void setNume(string nume)
- {
- if (nume == "bmw")
- cout << "nu reparam cazane ";
- else
- this->nume = nume;
- }
- string getnume()
- {
- return this->nume;
- }
- float medie()
- {
- float s = 0, medie = 0;
- for (int i = 0; i < this->revizii; i++)
- {
- s++;
- medie = medie + this->costRevizii[i];
- }
- return medie / s;
- }
- RevizieAuto(string nume, int* cost, int nr) :id(++this->k)
- {
- this->nume = nume;
- this->revizii = nr;
- this->costRevizii = new int[nr];
- for (int i = 0; i < nr; i++)
- this->costRevizii[i] = cost[i];
- }
- RevizieAuto(const RevizieAuto& r)
- {
- this->nume = r.nume;
- this->revizii = r.revizii;
- this->costRevizii = new int[r.revizii];
- for (int i = 0; i < r.revizii; i++)
- this->costRevizii[i] = r.costRevizii[i];
- }
- RevizieAuto operator =(const RevizieAuto& r)
- {
- this->nume = r.nume;
- this->revizii = r.revizii;
- if (this->costRevizii != NULL)
- delete[] this->costRevizii;
- this->costRevizii = new int[r.revizii];
- for (int i = 0; i < r.revizii; i++)
- this->costRevizii[i] = r.costRevizii[i];
- return *this;
- }
- ~RevizieAuto()
- {
- if (this->costRevizii != NULL)
- delete[] this->costRevizii;
- this->k--;
- }
- friend ostream& operator <<(ostream& out, const RevizieAuto& r);
- friend bool operator !(RevizieAuto& r);
- friend void operator >>(istream& in, RevizieAuto& r);
- friend ofstream& operator << (ofstream& fout, const RevizieAuto& r);
- friend void operator >>(ifstream& fin, RevizieAuto& r);
- virtual int getcost()
- {
- int s = 0;
- for (int i = 0; i < this->revizii-1; i++)
- {
- s = s + this->costRevizii[i];
- }
- return s;
- }
- };
- int RevizieAuto::k = 0;
- ostream& operator << (ostream& out, const RevizieAuto& r)
- {
- out << "nume: " << r.nume << endl;
- out << "nr revizii: " << r.revizii << endl;
- for (int i = 0; i < r.revizii; i++)
- out << "cost revizie: " << r.costRevizii[i] << " ";
- return out;
- }
- ofstream& operator << (ofstream& fout, const RevizieAuto& r)
- {
- fout << "nume: " << r.nume << endl;
- fout << "nr revizii: " << r.revizii << endl;
- for (int i = 0; i < r.revizii; i++)
- fout << "cost revizie: " << r.costRevizii[i] << " ";
- return fout;
- }
- void operator >>(istream& in, RevizieAuto& r)
- {
- cout << "nume: ";
- in >> r.nume;
- cout << "revizii: ";
- in >> r.revizii;
- r.costRevizii = new int[r.revizii];
- for (int i = 0; i < r.revizii; i++)
- {
- cout << "cost revizii: ";
- in >> r.costRevizii[i];
- }
- }
- void operator >>(ifstream& fin, RevizieAuto& r)
- {
- cout << "id: ";
- cout << "nume: ";
- fin >> r.nume;
- cout << "revizii: ";
- fin >> r.revizii;
- r.costRevizii = new int[r.revizii];
- for (int i = 0; i < r.revizii; i++)
- {
- cout << "cost revizii: ";
- fin >> r.costRevizii[i];
- }
- }
- bool operator !(RevizieAuto& r)
- {
- bool reviziegratis = false;
- for (int i = 0; i < r.revizii; i++)
- if (r.costRevizii[i] == 0)
- reviziegratis = true;
- return reviziegratis;
- }
- bool operator> (RevizieAuto r1, RevizieAuto r2)
- {
- if (r1.getRevizii() > r2.getRevizii())
- return true;
- else
- return false;
- }
- class procedura : public RevizieAuto {
- protected:
- string nume = "default";
- int cost = 0;
- public:
- procedura(RevizieAuto r ,string nume, int cost):RevizieAuto(r)
- {
- this->nume = nume;
- this->cost = cost;
- }
- int getcost()
- {
- return this->cost;
- }
- friend ostream& operator << (ostream& out, const procedura& p);
- };
- ostream& operator <<(ostream& out, const procedura& p)
- {
- out << p.nume;
- out << p.cost;
- return out;
- }
- int main()
- {
- int v[5] = { 30,0,500,400,300 };
- RevizieAuto r1;
- RevizieAuto r2("revizie 2", v, 5);
- cout << r2;
- cout << "test copy const:" << endl;
- RevizieAuto r3 = r2;
- cout << "test operator =" << endl;
- RevizieAuto r4;
- r4 = r2;
- cout << r4 << endl;
- r4.setRevizii(4);
- cout << r4<<endl;
- r4.setNume("bmw");
- cout << r4.getnume() << endl;
- cout << "medie cost revizii: " << r4.medie() << endl;
- if (!r4)
- cout << "avem revizie gratis " << endl;
- else
- cout << " nu avem revizie gratis " << endl;
- if (r4 > r3)
- cout << "r4 are mai multe revizii ca r3";
- else
- cout << "r3 are mai multe hahahah" << endl;
- cout << "test cin: " << endl;
- //RevizieAuto f5;
- //cin >> f5;
- //cout << f5 << endl;
- RevizieAuto* r = new RevizieAuto[3];
- ifstream f("cacamaca.txt");
- for(int i=0;i<3;i++)
- f >> r[i];
- for (int i = 0; i < 3; i++)
- cout << r[i]<<endl;
- cout << "test virtualizare-----------------------------" << endl;
- procedura p(r3, "nume procedura", 100);
- RevizieAuto *vector[2];
- vector[0] = new RevizieAuto (r2);
- vector[1] = new procedura (p);
- for (int i = 0; i < 2; i++)
- cout << vector[i]->getcost() << endl;
- }
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement