rwth-info3/Aufgabenblock_1/PKW.cpp

75 lines
1.7 KiB
C++
Raw Permalink Normal View History

2011-10-14 19:24:57 +02:00
#include <iostream>
#include <iomanip>
#include "PKW.h"
using namespace std;
extern double dGlobaleZeit;
2011-10-18 21:51:28 +02:00
/* Standardkonstruktor */
PKW::PKW() : Fahrzeug() { }
2011-10-14 19:24:57 +02:00
PKW::PKW(string sName, double dMaxGeschwindigkeit) :
2011-10-18 21:51:28 +02:00
Fahrzeug(sName, dMaxGeschwindigkeit) {
}
2011-10-14 19:24:57 +02:00
2011-10-18 21:51:28 +02:00
PKW::PKW(string sName, double dMaxGeschwindigkeit, double dVerbrauch,
double dTankvolumen) :
Fahrzeug(sName, dMaxGeschwindigkeit), p_dVerbrauch(dVerbrauch),
p_dTankinhalt(dTankvolumen / 2), p_dTankvolumen(dTankvolumen) {
}
2011-10-14 19:24:57 +02:00
2011-10-18 21:51:28 +02:00
PKW::~PKW() {
}
2011-10-14 19:24:57 +02:00
double PKW::dTanken(double dMenge) {
double dAlterInhalt = p_dTankinhalt;
if (dMenge == 0) {
p_dTankinhalt = p_dTankvolumen;
2011-10-18 21:51:28 +02:00
} else {
2011-10-14 19:24:57 +02:00
p_dTankinhalt += dMenge;
if (p_dTankinhalt > p_dTankvolumen) {
p_dTankinhalt = p_dTankvolumen; /* Verhindere Überfüllung */
}
}
return p_dTankinhalt - dAlterInhalt;
}
void PKW::vAbfertigung() {
if (p_dTankinhalt > 0) { /* prüfen, ob etwas im Tank ist */
2011-10-18 21:51:28 +02:00
p_dTankinhalt -= (dGlobaleZeit - p_dZeit) * p_dMaxGeschwindigkeit
* p_dVerbrauch / 100;
2011-10-14 19:24:57 +02:00
if (p_dTankinhalt < 0) { /* falls Tankinhalt negativ ist */
2011-10-18 21:51:28 +02:00
p_dTankinhalt = 0;
2011-10-14 19:24:57 +02:00
}
Fahrzeug::vAbfertigung();
}
}
void PKW::vAusgabe() const {
Fahrzeug::vAusgabe();
cout << setprecision(2) << setiosflags(ios::fixed)
<< resetiosflags(ios::left) << setiosflags(ios::right)
<< setw(12) << dVerbrauch()
<< setw(13) << p_dTankinhalt;
}
ostream& PKW::ostreamAusgabe(ostream &stream) const {
Fahrzeug::ostreamAusgabe(stream) << setprecision(2) << setiosflags(ios::fixed)
2011-10-18 21:51:28 +02:00
<< resetiosflags(ios::left) << setiosflags(ios::right)
<< setw(12) << dVerbrauch()
<< setw(13) << p_dTankinhalt;
2011-10-14 19:24:57 +02:00
return stream;
}
double PKW::dVerbrauch() const {
return p_dGesamtStrecke * p_dVerbrauch / 100;
}