ein paar bugs gefixt und auf Abnahme vorbereitet
This commit is contained in:
parent
c1f9fa1ac6
commit
19f1e99deb
10 changed files with 65 additions and 57 deletions
|
@ -55,8 +55,8 @@ void AktivesVO::vInitialisierung() {
|
|||
}
|
||||
|
||||
void AktivesVO::vAusgabeHeader() {
|
||||
cout << "ID Zeit Name : Kmh GesamtStrecke Verbrauch Tankinhalt" << endl;
|
||||
cout << "+++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++"
|
||||
cout << "ID Zeit Name : Kmh Strecke Abschnitt Verbrauch Tankinhalt" << endl;
|
||||
cout << "++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++"
|
||||
<< endl;
|
||||
}
|
||||
|
||||
|
@ -64,8 +64,8 @@ ostream& AktivesVO::ostreamAusgabe(ostream &stream) const {
|
|||
stream << setprecision(1) << setiosflags(ios::fixed)
|
||||
<< resetiosflags(ios::right) << setiosflags(ios::left)
|
||||
<< setw(3) << p_iID
|
||||
<< setw(5) << p_dZeit
|
||||
<< setw(7) << p_sName << ":";
|
||||
<< setw(6) << p_dZeit
|
||||
<< setw(9) << p_sName << ":";
|
||||
|
||||
return stream;
|
||||
}
|
||||
|
|
|
@ -48,9 +48,9 @@ void Fahrzeug::vInitialisierung() {
|
|||
ostream& Fahrzeug::ostreamAusgabe(ostream &stream) const {
|
||||
AktivesVO::ostreamAusgabe(stream) << setprecision(2)
|
||||
<< resetiosflags(ios::left) << setiosflags(ios::right)
|
||||
<< setw(8) << dGeschwindigkeit()
|
||||
<< setw(7) << p_dGesamtStrecke << " ("
|
||||
<< setw(6) << p_dAbschnittStrecke << ")";
|
||||
<< setw(10) << dGeschwindigkeit()
|
||||
<< setw(9) << p_dGesamtStrecke
|
||||
<< setw(11) << p_dAbschnittStrecke;
|
||||
|
||||
return stream;
|
||||
}
|
||||
|
|
|
@ -36,7 +36,8 @@ void Kreuzung::vTanken(Fahrzeug *pFz) {
|
|||
if (p_dTankstelle > 0) {
|
||||
p_dTankstelle -= pFz->dTanken(); /* immmer volltanken */
|
||||
}
|
||||
else {
|
||||
|
||||
if (p_dTankstelle < 0) {
|
||||
p_dTankstelle = 0;
|
||||
}
|
||||
}
|
||||
|
@ -79,7 +80,7 @@ void Kreuzung::vZeichnen(Koordinaten iKoordinaten) const {
|
|||
ostream& Kreuzung::ostreamAusgabe(ostream &stream) const {
|
||||
AktivesVO::ostreamAusgabe(stream) << setprecision(2)
|
||||
<< resetiosflags(ios::left) << setiosflags(ios::right)
|
||||
<< setw(8) << p_dTankstelle << " ( ";
|
||||
<< setw(10) << p_dTankstelle << " ( ";
|
||||
|
||||
list<Weg *>::const_iterator it;
|
||||
for (it = p_lWege.begin(); it != p_lWege.end(); it++) {
|
||||
|
|
|
@ -11,7 +11,7 @@ Losfahren::~Losfahren()
|
|||
{ }
|
||||
|
||||
void Losfahren::vBearbeiten() {
|
||||
cerr << "Fahrausnahme: Losfahren (Fzg: " << *p_pFahrzeug << ", Weg: " << *p_pWeg << ")" << endl;
|
||||
cerr << "Fahrausnahme: Losfahren (Fzg: " << p_pFahrzeug->getName() << ", Weg: " << p_pWeg->getName() << ")" << endl;
|
||||
|
||||
p_pWeg->vAbgabe(p_pFahrzeug);
|
||||
p_pWeg->vAnnahme(p_pFahrzeug);
|
||||
|
|
|
@ -75,8 +75,8 @@ void PKW::vAbfertigung() {
|
|||
ostream& PKW::ostreamAusgabe(ostream &stream) const {
|
||||
Fahrzeug::ostreamAusgabe(stream) << setprecision(2) << setiosflags(ios::fixed)
|
||||
<< resetiosflags(ios::left) << setiosflags(ios::right)
|
||||
<< setw(12) << dVerbrauch()
|
||||
<< setw(13) << p_dTankinhalt;
|
||||
<< setw(11) << dVerbrauch()
|
||||
<< setw(12) << p_dTankinhalt;
|
||||
|
||||
return stream;
|
||||
}
|
||||
|
|
|
@ -13,15 +13,21 @@ Streckenende::~Streckenende()
|
|||
|
||||
void Streckenende::vBearbeiten() {
|
||||
Kreuzung *pZielKreuzung = p_pWeg->getZielKreuzung();
|
||||
Weg *pNeuerWeg = pZielKreuzung->pZufaelligerWeg(p_pWeg); /* wähle zufälligen Weg */
|
||||
|
||||
p_pWeg->vAbgabe(p_pFahrzeug);
|
||||
pZielKreuzung->vTanken(p_pFahrzeug);
|
||||
pZielKreuzung->vAnnahme(p_pFahrzeug, 0, pNeuerWeg);
|
||||
|
||||
cerr << "Fahrausnahme: Fahrzeug wird umgesetzt ("
|
||||
<< "Fzg: " << p_pFahrzeug->getName()
|
||||
<< ", Weg: " << p_pWeg->getName() << " => " << pNeuerWeg->getName()
|
||||
<< ", Kreuz.: " << pZielKreuzung->getName() << " (Tank: " << pZielKreuzung->getTankinhalt() << ")"
|
||||
<< ")" << endl;
|
||||
<< "Fzg: " << p_pFahrzeug->getName()
|
||||
<< ", Weg: " << p_pWeg->getName();
|
||||
|
||||
if (pZielKreuzung != NULL) {
|
||||
Weg *pNeuerWeg = pZielKreuzung->pZufaelligerWeg(p_pWeg); /* wähle zufälligen Weg */
|
||||
|
||||
pZielKreuzung->vTanken(p_pFahrzeug);
|
||||
pZielKreuzung->vAnnahme(p_pFahrzeug, 0, pNeuerWeg);
|
||||
|
||||
cerr << " => " << pNeuerWeg->getName() << ", Kreuz.: " << pZielKreuzung->getName() << " (Tank: " << pZielKreuzung->getTankinhalt() << ")";
|
||||
}
|
||||
|
||||
cerr << ")" << endl;
|
||||
}
|
||||
|
|
|
@ -108,10 +108,10 @@ Kreuzung * Weg::getZielKreuzung() {
|
|||
|
||||
double Weg::getMaxGeschwindigkeit() const {
|
||||
switch (p_eLimit) {
|
||||
case Weg::Innerorts: return 50;
|
||||
case Weg::Innerorts: return 50;
|
||||
case Weg::Landstrasse: return 100;
|
||||
case Weg::Autobahn: return DBL_MAX; /* unbegrenzt */
|
||||
default: return 0;
|
||||
default: throw string("ungültige Begrenzung!");
|
||||
}
|
||||
}
|
||||
|
||||
|
@ -121,7 +121,7 @@ ostream& Weg::ostreamAusgabe(ostream &stream) const {
|
|||
|
||||
AktivesVO::ostreamAusgabe(stream) << setprecision(2)
|
||||
<< resetiosflags(ios::left) << setiosflags(ios::right)
|
||||
<< setw(8);
|
||||
<< setw(10);
|
||||
|
||||
if (dMaxGeschwindigkeit == DBL_MAX) {
|
||||
stream << "(inf)";
|
||||
|
@ -130,7 +130,7 @@ ostream& Weg::ostreamAusgabe(ostream &stream) const {
|
|||
stream << dMaxGeschwindigkeit;
|
||||
}
|
||||
|
||||
stream << setw(16) << p_dLaenge << " ( ";
|
||||
stream << setw(9) << p_dLaenge << " ( ";
|
||||
|
||||
LazyListe<Fahrzeug *>::const_iterator it;
|
||||
for (it = p_lFahrzeuge.begin(); it != p_lFahrzeuge.end(); it++) {
|
||||
|
|
|
@ -17,7 +17,7 @@ class Kreuzung;
|
|||
class Weg : public AktivesVO {
|
||||
public:
|
||||
typedef enum {
|
||||
Innerorts, /* 50 km/h */
|
||||
Innerorts = 1, /* 50 km/h */
|
||||
Landstrasse, /* 100 km/h */
|
||||
Autobahn /* unbegrenzt */
|
||||
} Begrenzung;
|
||||
|
|
|
@ -67,13 +67,8 @@ void Welt::vEinlesen(istream &in) {
|
|||
>> bUeberholverbot;
|
||||
|
||||
/* Kreuzungen suchen */
|
||||
Kreuzung *pQuellKreuzung = static_cast<Kreuzung *>(AktivesVO::pObjekt(sQuellKreuzung));
|
||||
Kreuzung *pZielKreuzung = static_cast<Kreuzung *>(AktivesVO::pObjekt(sZielKreuzung));
|
||||
|
||||
eLimit--;
|
||||
if (eLimit > 2 || eLimit < 0) {
|
||||
throw string("Ungültige Geschwindikeitsbegrenzung (0-2)");
|
||||
}
|
||||
Kreuzung *pQuellKreuzung = dynamic_cast<Kreuzung *>(AktivesVO::pObjekt(sQuellKreuzung));
|
||||
Kreuzung *pZielKreuzung = dynamic_cast<Kreuzung *>(AktivesVO::pObjekt(sZielKreuzung));
|
||||
|
||||
/* Kreuzungen verbinden & Wege erstellen */
|
||||
pQuellKreuzung->vVerbinde(pZielKreuzung, sHinweg, sRueckweg, dLaenge, static_cast<Weg::Begrenzung >(eLimit), bUeberholverbot);
|
||||
|
@ -87,7 +82,7 @@ void Welt::vEinlesen(istream &in) {
|
|||
in >> *pPkw >> sStartKreuzung >> dStartZeit;
|
||||
|
||||
/* PKW einsetzen */
|
||||
Kreuzung *pStartKreuzung = static_cast<Kreuzung *>(AktivesVO::pObjekt(sStartKreuzung));
|
||||
Kreuzung *pStartKreuzung = dynamic_cast<Kreuzung *>(AktivesVO::pObjekt(sStartKreuzung));
|
||||
pStartKreuzung->vAnnahme(pPkw, dStartZeit);
|
||||
}
|
||||
else if (sTyp == "FAHRRAD") {
|
||||
|
@ -99,7 +94,7 @@ void Welt::vEinlesen(istream &in) {
|
|||
in >> *pRad >> sStartKreuzung >> dStartZeit;
|
||||
|
||||
/* PKW einsetzen */
|
||||
Kreuzung *pStartKreuzung = static_cast<Kreuzung *>(AktivesVO::pObjekt(sStartKreuzung));
|
||||
Kreuzung *pStartKreuzung = dynamic_cast<Kreuzung *>(AktivesVO::pObjekt(sStartKreuzung));
|
||||
pStartKreuzung->vAnnahme(pRad, dStartZeit);
|
||||
}
|
||||
else if (sTyp != "") {
|
||||
|
@ -144,14 +139,14 @@ void Welt::vEinlesenMitGrafik(istream &in) {
|
|||
}
|
||||
|
||||
/* Kreuzungen suchen */
|
||||
Kreuzung *pQuellKreuzung = static_cast<Kreuzung *>(AktivesVO::pObjekt(sQuellKreuzung));
|
||||
Kreuzung *pZielKreuzung = static_cast<Kreuzung *>(AktivesVO::pObjekt(sZielKreuzung));
|
||||
Kreuzung *pQuellKreuzung = dynamic_cast<Kreuzung *>(AktivesVO::pObjekt(sQuellKreuzung));
|
||||
Kreuzung *pZielKreuzung = dynamic_cast<Kreuzung *>(AktivesVO::pObjekt(sZielKreuzung));
|
||||
|
||||
/* Kreuzungen verbinden & Wege erstellen */
|
||||
pQuellKreuzung->vVerbinde(pZielKreuzung, sHinweg, sRueckweg, dLaenge, static_cast<Weg::Begrenzung >(eLimit), bUeberholverbot);
|
||||
|
||||
/* Wege Zeichnen */
|
||||
Weg *pHinweg = static_cast<Weg *>(AktivesVO::pObjekt(sHinweg));
|
||||
Weg *pHinweg = dynamic_cast<Weg *>(AktivesVO::pObjekt(sHinweg));
|
||||
pHinweg->vZeichnen(iAnzahlKoordinaten, iPoly);
|
||||
}
|
||||
else if (sTyp == "PKW") {
|
||||
|
@ -163,7 +158,7 @@ void Welt::vEinlesenMitGrafik(istream &in) {
|
|||
in >> *pPkw >> sStartKreuzung >> dStartZeit;
|
||||
|
||||
/* PKW einsetzen */
|
||||
Kreuzung *pStartKreuzung = static_cast<Kreuzung *>(AktivesVO::pObjekt(sStartKreuzung));
|
||||
Kreuzung *pStartKreuzung = dynamic_cast<Kreuzung *>(AktivesVO::pObjekt(sStartKreuzung));
|
||||
pStartKreuzung->vAnnahme(pPkw, dStartZeit);
|
||||
}
|
||||
else if (sTyp == "FAHRRAD") {
|
||||
|
@ -175,7 +170,7 @@ void Welt::vEinlesenMitGrafik(istream &in) {
|
|||
in >> *pRad >> sStartKreuzung >> dStartZeit;
|
||||
|
||||
/* PKW einsetzen */
|
||||
Kreuzung *pStartKreuzung = static_cast<Kreuzung *>(AktivesVO::pObjekt(sStartKreuzung));
|
||||
Kreuzung *pStartKreuzung = dynamic_cast<Kreuzung *>(AktivesVO::pObjekt(sStartKreuzung));
|
||||
pStartKreuzung->vAnnahme(pRad, dStartZeit);
|
||||
}
|
||||
else if (sTyp != "") {
|
||||
|
|
|
@ -279,14 +279,16 @@ void vAufgabe6a(int argc, char *argv[]) {
|
|||
|
||||
void vAufgabe7(int argc, char *argv[]) {
|
||||
PKW vw("Golf", 120, 10, 90);
|
||||
PKW vw2("Auto", 55, 12, 80);
|
||||
Fahrrad velo("Haibike", 42);
|
||||
|
||||
Weg hin("Hinweg", 500.0, Weg::Landstrasse);
|
||||
Weg rueck("Rueckweg", 500.0, Weg::Landstrasse);
|
||||
Weg hin("Hinweg", 200.0, Weg::Landstrasse);
|
||||
Weg rueck("Rueckweg", 200.0, Weg::Landstrasse);
|
||||
|
||||
hin.setRueckweg(&rueck);
|
||||
rueck.setRueckweg(&hin);
|
||||
|
||||
bool bAngenommen = false;
|
||||
bool bStarted = bInitialisiereGrafik(800, 600);
|
||||
if (!bStarted) {
|
||||
cerr << "Konnte Simulationsserver nicht starten!" << endl;
|
||||
|
@ -295,20 +297,26 @@ void vAufgabe7(int argc, char *argv[]) {
|
|||
Koordinaten iPoly[] = {{100, 100}, {700, 500} };
|
||||
hin.vZeichnen(2, iPoly);
|
||||
|
||||
hin.vAnnahme(&vw, 8);
|
||||
hin.vAnnahme(&vw, 4);
|
||||
hin.vAnnahme(&velo, 1);
|
||||
|
||||
Fahrzeug::vAusgabeHeader();
|
||||
for (dGlobaleZeit = 0; dGlobaleZeit <= 30; dGlobaleZeit += 0.5) {
|
||||
for (dGlobaleZeit = 0; dGlobaleZeit < 9.4; dGlobaleZeit += 0.1) {
|
||||
hin.vAbfertigung();
|
||||
|
||||
hin.vZeichnen();
|
||||
rueck.vZeichnen();
|
||||
|
||||
cout << vw << endl << velo << endl << hin << endl << "--" << endl;
|
||||
if (dGlobaleZeit > 4 && !bAngenommen) {
|
||||
hin.vAnnahme(&vw2, dGlobaleZeit + 1);
|
||||
bAngenommen = true;
|
||||
}
|
||||
|
||||
Fahrzeug::vAusgabeHeader();
|
||||
cout << hin << endl << "--" << endl;
|
||||
|
||||
vSetzeZeit(dGlobaleZeit);
|
||||
Sleep(500);
|
||||
Sleep(100);
|
||||
}
|
||||
|
||||
vBeendeGrafik();
|
||||
|
@ -318,7 +326,7 @@ void vAufgabe8(int argc, char *argv[]) {
|
|||
bInitialisiereGrafik(1000, 700);
|
||||
|
||||
PKW vw("Golf", 120, 10, 90);
|
||||
PKW ferrari("Ferrari", 320, 15, 210);
|
||||
PKW ferrari("Ferrari", 120, 15, 210);
|
||||
Fahrrad velo("Haibike", 42);
|
||||
|
||||
Kreuzung kr1("K1");
|
||||
|
@ -357,9 +365,9 @@ void vAufgabe8(int argc, char *argv[]) {
|
|||
bZeichneStrasse("W34", "W43", 85, 5, (int *) iW34);
|
||||
bZeichneStrasse("W44a", "W44b", 130, 7, (int *) iW44);
|
||||
|
||||
kr1.vAnnahme(&vw);
|
||||
kr1.vAnnahme(&velo);
|
||||
kr2.vAnnahme(&ferrari, 5);
|
||||
kr1.vAnnahme(&vw, 1);
|
||||
kr1.vAnnahme(&velo, 2);
|
||||
kr2.vAnnahme(&ferrari, 3);
|
||||
|
||||
for (dGlobaleZeit = 0.3; dGlobaleZeit <= 24; dGlobaleZeit += 0.01) {
|
||||
kr1.vAbfertigung();
|
||||
|
@ -394,7 +402,6 @@ void vAufgabe9(int argc, char *argv[]) {
|
|||
ifstream File;
|
||||
|
||||
File.open(argv[1]);
|
||||
|
||||
if(!File.good()) {
|
||||
throw string("Datei existiert nicht!");
|
||||
}
|
||||
|
@ -406,10 +413,7 @@ void vAufgabe9(int argc, char *argv[]) {
|
|||
File >> pkw >> rad >> krz;
|
||||
|
||||
Fahrzeug::vAusgabeHeader();
|
||||
cout
|
||||
<< pkw << endl
|
||||
<< rad << endl
|
||||
<< krz << endl;
|
||||
cout << pkw << endl << rad << endl << krz << endl;
|
||||
|
||||
/* Teste map */
|
||||
string sName;
|
||||
|
@ -418,14 +422,15 @@ void vAufgabe9(int argc, char *argv[]) {
|
|||
cout << *AktivesVO::pObjekt(sName) << endl;
|
||||
|
||||
cout << endl;
|
||||
PKW pkw2("Porsche", 99);
|
||||
cout << "Geben Sie einen Namen zum Erstellen ein: ";
|
||||
cin >> sName;
|
||||
PKW pkw2(sName, 99);
|
||||
}
|
||||
|
||||
void vAufgabe9a(int argc, char *argv[]) {
|
||||
ifstream File;
|
||||
|
||||
File.open(argv[1]);
|
||||
|
||||
if(!File.good()) {
|
||||
throw string("Datei existiert nicht!");
|
||||
}
|
||||
|
@ -435,14 +440,15 @@ void vAufgabe9a(int argc, char *argv[]) {
|
|||
Welt tErde;
|
||||
tErde.vEinlesenMitGrafik(File);
|
||||
|
||||
for (dGlobaleZeit = 0; dGlobaleZeit < 24*31; dGlobaleZeit += 0.1) {
|
||||
for (dGlobaleZeit = 0; dGlobaleZeit < 24*31; dGlobaleZeit += 0.01) {
|
||||
tErde.vAbfertigung();
|
||||
tErde.vZeichnen();
|
||||
|
||||
Fahrzeug::vAusgabeHeader();
|
||||
cout << tErde << "--" << endl;
|
||||
|
||||
vSetzeZeit(dGlobaleZeit);
|
||||
Sleep(500);
|
||||
Sleep(30);
|
||||
}
|
||||
|
||||
vBeendeGrafik();
|
||||
|
|
Loading…
Add table
Reference in a new issue