Witam mam do wykonania m.in. takie zadanie:
Problem dla mnie stanowi zmodyfikowanie funkcji w klasie pochodnej, konkretnie, jak powiększyć zużycie paliwa o 0.15, kiedy dach jest otwarty. Liczę, że ktoś z użytkowników mnie nakieruje ;)
Mój kod:
#include<iostream>
#include<string>
using namespace std;
class TSamochod{
string marka;
double pB, pM, zP ;
public:
TSamochod(string , double , double , double );
void jedz(float jakSzybko, float jakDaleko);
};
class TKabriolet: public TSamochod{
bool dach_otwarty;
public:
TKabriolet(string , double , double , double , bool dach_otwarty=false);
bool otworz_dach(bool dach_otwarty);
bool zamknij_dach(bool dach_otwarty );
void jedz(float jakSzybko, float jakDaleko);
};
int main(int argc, char* argv[])
{
TSamochod bmw("Bmw", 30, 185, 10.5);
TKabriolet fiat("Fiat", 25, 140, 7.0);
bmw.jedz(160,1800);
fiat.jedz(110,1800);
return 0;
}
//---------------------------------------------------------------------------
TSamochod::TSamochod(string m, double pB , double pM , double zP )
{
marka=m;
this->pB=pB;
this->pM=pM;
this->zP=zP;
}
void TSamochod::jedz(float jakSzybko, float jakDaleko)
{
if(jakSzybko>=pM)
jakSzybko=pM;
cout<<"Samochod pojedzie z szybkoscia: "<<jakSzybko<<endl;
double zuzycie=(jakDaleko*0.01)*zP;
if(jakSzybko<(0.3*pM) || jakSzybko>(0.8*pM)) zuzycie+=zuzycie*0.2;
cout<<"Zuzycie paliwa: "<<zuzycie<<endl;
if(zuzycie<pB)
cout<<"Nie nalezy tankowac. "<<endl;
int ile=0;
if(zuzycie>pB)
{
while(zuzycie>0)
{
zuzycie-=pB;
ile++;
}
cout<<"Nalezy tankowac "<<ile<<" razy."<<endl;
}
cout<<"Podroz zajmie: "<<((ile*0.10)+(jakDaleko/jakSzybko))<<" godzin"<<endl;
}
TKabriolet::TKabriolet(string m, double pB, double pM, double zP, bool dach_otwarty): TSamochod(m,pB,pM,zP), dach_otwarty(dach_otwarty)
{}
void TKabriolet::jedz(float jakSzybko, float jakDaleko)
{
cout<<" \nDach Kabrioletu ";
dach_otwarty==true ? cout<<"otwarty"<<endl : cout<<"zamkniety"<<endl;
TSamochod::jedz(jakSzybko, jakDaleko);
}
bool TKabriolet::otworz_dach(bool dach_otwarty)
{
dach_otwarty=true;
return dach_otwarty;
}
bool zamknij_dach(bool dach_otwarty )
{
dach_otwarty=false;
return dach_otwarty;
}