Advertisement
Not a member of Pastebin yet?
Sign Up,
it unlocks many cool features!
- /*
- Se da o clasa de baza - Masina.
- O masina are urmatoarele caracteristici:
- - anul de fabricatie
- - culoare
- - viteza maxima
- - Nume
- * Derivati din clasa Masina 3 tipuri de masini: Dacia, Renault si BMW
- * Creati un vector de masini
- * Realizati o sortare:
- - crescatoare a masinilor in functie de viteza
- - descrescatoare in functie de anul de fabricatie
- Trebuie sa creati clasa Dacia.cpp, Renault.cpp si BMW.cpp care sa fie derivate din clasa Masina si sa implementeze metodele.
- Se acorda 2 pct pentru implementarea corecta a acestei ierarhii de clase (membri in clasa si constructor/destructor).
- Fisierele nu contin si include-urile necesare (acestea trebuie sa le adaugati voi).
- 2 pct se dau daca programul compileaza.
- Pentru sortarea masinilor se vor folosi functii din STL.
- */
- #include "stdafx.h"
- #include <iostream>
- #include <vector>
- #include <string>
- #include <stdlib.h>
- #include <algorithm>
- using namespace std;
- string rosu("rosu");
- string verde("verde");
- typedef struct _Specificatie {
- int an;
- string nume;
- int viteza_max;
- } Specificatie;
- class Masina
- {
- private:
- string culoare;
- _Specificatie Specificatie;
- //[2p] Adaugati Caracteristici masina.
- public:
- //[3p] Returneaza an de fabricatie al masinii. -> cate 1p pentru implementarea din fiecare clasa derivata
- virtual int getAn_fabricatie() = 0;
- //[3p] Returneaza culoarea masinii. -> cate 1p pentru implementarea din fiecare clasa derivata
- virtual string getCuloare() = 0;
- //[3p] Returneaza viteza maxima a masinii. -> cate 1p pentru implementarea din fiecare clasa derivata
- virtual int getViteza_maxima() = 0;
- //[3p] Seteaza numele masinii -> cate 1p pentru implementarea din fiecare clasa derivata
- virtual void setNume(string name) = 0;
- //[3p] Returneaza numele masinii. -> cate 1p pentru implementarea din fiecare clasa derivata
- virtual string getNume() = 0;
- };
- class Dacia : public Masina
- {
- private:
- string culoare;
- _Specificatie D;
- public:
- Dacia(int an_fab, string col, int vit_max) {
- this->D.an = an_fab;
- this->culoare = col;
- this->D.viteza_max = vit_max;
- }
- int getAn_fabricatie() {
- return this->D.an;
- }
- string getCuloare() {
- return this->culoare;
- }
- int getViteza_maxima() {
- return this->D.viteza_max;
- }
- void setNume(string nume) {
- this->D.nume = nume;
- }
- string getNume() {
- return this->D.nume;
- }
- };
- class Renault : public Masina
- {
- private:
- string culoare;
- _Specificatie D;
- public:
- Renault(int an_fab, string col, int vit_max) {
- this->D.an = an_fab;
- this->culoare = col;
- this->D.viteza_max = vit_max;
- }
- int getAn_fabricatie() {
- return this->D.an;
- }
- string getCuloare() {
- return this->culoare;
- }
- int getViteza_maxima() {
- return this->D.viteza_max;
- }
- void setNume(string nume) {
- this->D.nume = nume;
- }
- string getNume() {
- return this->D.nume;
- }
- };
- class BMW : public Masina
- {
- private:
- string culoare;
- _Specificatie D;
- public:
- BMW(int an_fab, string col, int vit_max) {
- this->D.an = an_fab;
- this->culoare = col;
- this->D.viteza_max = vit_max;
- }
- int getAn_fabricatie() {
- return this->D.an;
- }
- string getCuloare() {
- return this->culoare;
- }
- int getViteza_maxima() {
- return this->D.viteza_max;
- }
- void setNume(string nume) {
- this->D.nume = nume;
- }
- string getNume() {
- return this->D.nume;
- }
- };
- bool comp_vmax(Masina* o1, Masina* o2) { return (o1->getViteza_maxima() < o2->getViteza_maxima()); }
- bool comp_an(Masina* o1, Masina* o2) { return (o1->getAn_fabricatie() < o2->getAn_fabricatie()); }
- void main()
- {
- Masina **cars = (Masina**)malloc(6 * sizeof(Masina*));
- string names[6] = { "Dacia 1310" , "Dacia Logan", "Renault C4", "Renault C5", "BMW X4", "BMW X5"};
- cars[0] = (Masina*) new Dacia(1994, "rosu", 140);
- cars[1] = (Masina*) new Dacia(2004, "gri", 135);
- cars[2] = (Masina*) new Renault(2010, "verde", 180);
- cars[3] = (Masina*) new Renault(2009, "negru", 165);
- cars[4] = (Masina*) new BMW(2014, "alba", 210);
- cars[5] = (Masina*) new BMW(1994, "albastra", 190);
- // Cream un vector de masini
- vector <Masina*> masini;
- for (int i = 0; i<6; i++)
- {
- cars[i]->setNume(names[i]);
- masini.push_back(cars[i]);
- }
- //[2p] afisare caracteristici masini (parcurgere cu iterator)
- cout << "*** Vehicule ****\n";
- for (auto i : masini) {
- cout << i->getNume() << ": " << i->getAn_fabricatie() << " - " << i->getCuloare() << " - " << i->getViteza_maxima() << '\n';
- }
- //[2p] Sortam vectorul crescator in functie de viteza
- cout << "\n\n*** sort by vMax ***\n";
- sort(masini.begin(), masini.end(), comp_vmax);
- for (auto i : masini) {
- cout << i->getNume() << ": " << i->getViteza_maxima() << '\n';
- }
- //[2p] Sortam vectorul descrescator in functie de anul de fabricatie
- cout << "\n\n*** sort by an ***\n";
- sort(masini.begin(), masini.end(), comp_an);
- for (auto i : masini) {
- cout << i->getNume() << ": " << i->getAn_fabricatie() << '\n';
- }
- }
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement