Untitled
unknown
plain_text
8 months ago
3.6 kB
6
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