1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50 51 52 53 54 55 56 57 58 59
|
void Consumidor :: fonteFile(string nome, vector<Consumidor*> &consumi)
{
ifstream file (nome.c_str());
if(!file){ cout << "Ficheiro não encontrado." << endl; return; }
string tipo, name, morada, codpost, dono;
vector <double> con;
float taxa;
char lixo;
cout << "A ler de ficheiro..." << endl;
while(!file.eof())
{
getline(cin, tipo);
if(tipo == "PD" || tipo == "PC")
{
getline(file, name);
getline(file, morada);
getline(file, codpost);
file >> con.at(0) >> con.at(1)>> con.at(2)>> con.at(3)>> con.at(4)>> con.at(5)>> con.at(6)>> con.at(7)>> con.at(8)>> con.at(9)>> con.at(10)>> con.at(11);
file >> taxa;
file >> lixo;
if(tipo == "PD")
{
Domestico *pd = new Domestico(tipo, name, morada, codpost, con, taxa);
consumi.push_back(pd);
return;
}
else if(tipo == "PC")
{
Comercial *pc = new Comercial(tipo, name, morada, codpost, con, taxa);
consumi.push_back(pc);
return;
}
}
else if(tipo == "EMP" || tipo == "EG")
{
getline(file, dono);
getline(file, name);
getline(file, morada);
getline(file, codpost);
cin >> con.at(0) >> con.at(1)>> con.at(2)>> con.at(3)>> con.at(4)>> con.at(5)>> con.at(6)>> con.at(7)>> con.at(8)>> con.at(9)>> con.at(10)>> con.at(11);
file >> taxa;
file >> lixo;
if(tipo == "EG")
{
Grande *eg = new Grande(tipo, name, morada, codpost, con, dono, taxa);
consumi.push_back(eg);
return;
}
else if(tipo == "EMP")
{
PequenaMedia *emp = new PequenaMedia(tipo, name, morada, codpost, con, dono, taxa);
consumi.push_back(emp);
return;
}
}
}
}
| |