Untitled
unknown
plain_text
9 days ago
3.6 kB
5
Indexable
#include <iostream> #include <fstream> #include <vector> using namespace std; class Date { public: string tip; string nr_m; int h1, h2, m1, m2; char col1, col2; int ore, min; Date(const string& t, const string& nr, int h1_, char c1, int m1_, int h2_, char c2, int m2_) : tip(t), nr_m(nr), h1(h1_), col1(c1), m1(m1_), h2(h2_), col2(c2), m2(m2_) {} void calculare_timp(){ ore = h2 - h1; min = m2 - m1; if (min < 0){ min += 60; ore -= 1; } } void afisare_date() { cout << tip << " " << nr_m << " " << h1 << ":" << m1 << " " << h2 << ":" << m2 << endl; } virtual void calcul_tarif() = 0; virtual ~Date() {} }; class Masina : public Date { public: Masina(const string& nr, int h1, char c1, int m1, int h2, char c2, int m2) : Date("Masina", nr, h1, c1, m1, h2, c2, m2) {} void calcul_tarif() override { int tar = ore * 5; cout << "Spre plata pentru Masina: " << tar << " lei" << endl<<endl; } }; class Motocicleta : public Date { public: Motocicleta(const string& nr, int h1, char c1, int m1, int h2, char c2, int m2) : Date("Motocicleta", nr, h1, c1, m1, h2, c2, m2) {} void calcul_tarif() override { int tar = ore * 3; cout << "Spre plata pentru Motocicleta: " << tar << " lei" << endl<<endl; } }; class Bicicleta : public Date { public: Bicicleta(const string& nr, int h1, char c1, int m1, int h2, char c2, int m2) : Date("Bicicleta", nr, h1, c1, m1, h2, c2, m2) {} void calcul_tarif() override { ore = ore - 2; int tar = ore * 2; if (ore <= 0){ cout<<"N-ai ce plati saracule."<<endl<<endl; } else { cout << "Spre plata pentru Bicicleta: " << tar << " lei" << endl<<endl; } } }; class Camion : public Date { public: Camion(const string& nr, int h1, char c1, int m1, int h2, char c2, int m2) : Date("Camion", nr, h1, c1, m1, h2, c2, m2) {} void calcul_tarif() override { int tar = ore * 10; cout << "Spre plata pentru Camion: " << tar << " lei" << endl<<endl; } }; int main() { vector<Date*> vehicule; ifstream file("input.txt"); if (!file) { cerr << "Error: Could not open input.txt!" << endl<<endl; return 1; } string tip, nr_m; int h1, m1, h2, m2; char col1, col2; while (file >> tip >> nr_m >> h1 >> col1 >> m1 >> h2 >> col2 >> m2) { if (col1 != ':' || col2 != ':') { cerr << "Error: Time format incorrect in input file!" << endl; continue; } try { if (tip == "Masina") { vehicule.push_back(new Masina(nr_m, h1, col1, m1, h2, col2, m2)); } else if (tip == "Camion") { vehicule.push_back(new Camion(nr_m, h1, col1, m1, h2, col2, m2)); } else if (tip == "Motocicleta") { vehicule.push_back(new Motocicleta(nr_m, h1, col1, m1, h2, col2, m2)); } else if (tip == "Bicicleta") { vehicule.push_back(new Bicicleta(nr_m, h1, col1, m1, h2, col2, m2)); } else { cerr << "Error: Unknown vehicle type (" << tip << ")!" << endl; } } catch (const exception &e) { cerr << e.what() << endl; } } file.close(); for (Date* v : vehicule) { v->afisare_date(); v->calculare_timp(); v->calcul_tarif(); delete v; } return 0; }
Editor is loading...
Leave a Comment