diff --git a/bane.cpp b/bane.cpp index 28a27142a985e2b39147824ad6e4b0b2a557bafe..c599c2fbab08a475eea5b88c3e76d82d3af9179a 100644 --- a/bane.cpp +++ b/bane.cpp @@ -64,6 +64,11 @@ void Bane::skrivData() const { Rute::skrivData(); // Rute skriver egne datamedlemmer } +void Bane::skrivKort() const { + cout << "\nBanen har " << antVogner << " vogner og banesettet er " + << lengde << " meter langt.\n\n"; +} + /** * Skriver ut alle datamedlemmer for en bane til fil (virtuell) * diff --git a/bane.h b/bane.h index 58924d39fc7cfc4046c0af31b8ceb279a4406c63..03af3a5f0c1942df834ea1cf8405bef9b4844469 100644 --- a/bane.h +++ b/bane.h @@ -23,6 +23,7 @@ class Bane : public Rute { virtual void lesData(); virtual void skrivBeskrivelse(); virtual void skrivData() const; + virtual void skrivKort() const; virtual void skrivTilFil(std::ofstream & ut); }; diff --git a/buss.cpp b/buss.cpp index 5e9ec152cf4bdadcd41d149637aff90b3f96cdf7..a7436765dee2b737aeed22df5be0f4edf1b06feb 100644 --- a/buss.cpp +++ b/buss.cpp @@ -64,8 +64,8 @@ void Buss::lesData() { */ void Buss::skrivBeskrivelse() { cout << "Bussen har " << antSitt << " sitteplasser, " << antStaa - << " ståplasser og er " << (leddbuss ? "" : "ikke") - << " en leddbuss.\n"; + << " ståplasser og er " << (leddbuss ? "" : "ikke ") + << "en leddbuss.\n"; Rute::skrivBeskrivelse(); // Rute skriver egen informasjon } @@ -79,6 +79,16 @@ void Buss::skrivData() const { Rute::skrivData(); } +/** + * skrivKort() (virtuell) + * + */ +void Buss::skrivKort() const { +cout << "\nBussen har " << antSitt << " sitteplasser, " << antStaa + << " ståplasser og er " << (leddbuss ? "" : "ikke ") + << "en leddbuss.\n\n"; +} + /** * Skriver ut bussens datamedlemmer til fil (virtuell) * diff --git a/buss.h b/buss.h index 1c5309964735adbf13546fb52b2df35adabcf2a9..082dbe36a17e2a5e25a78bfde5cd5671ff80d2d7 100644 --- a/buss.h +++ b/buss.h @@ -25,6 +25,7 @@ class Buss : public Rute { virtual void lesData(); virtual void skrivBeskrivelse(); virtual void skrivData() const; + virtual void skrivKort() const; virtual void skrivTilFil(std::ofstream & ut); }; diff --git a/rute.cpp b/rute.cpp index cfa5f54210e1698651322bcc8740caa84c5831b3..9deeca26342b937f1f2b18ce25180b6e9ba28fc4 100644 --- a/rute.cpp +++ b/rute.cpp @@ -88,7 +88,13 @@ bool Rute::erListeGyldig(){ return false; } - +/** + * @brief + * + * @param nvn + * @return true + * @return false + */ bool Rute::erTall(std::string nvn) { return all_of(nvn.begin(), nvn.end(), ::isdigit); } @@ -109,6 +115,23 @@ bool Rute::finnesStopp(const int indeks) { return false; } +/** + * skrivRetninger(...) brukes med R T + * + */ +void Rute::skrivRetninger() const { + // Hjelpevariabler for å hente stasjonsnavnene knyttet til ruten: + int startIndeks = stoppene.front()->hentNr(), + stoppIndeks = stoppene.back()->hentNr(); + string startStasjon = gStoppestederBase.hentNavnVhaIndeks(startIndeks), + endeStasjon = gStoppestederBase.hentNavnVhaIndeks(stoppIndeks); + + // Skriver ut start- og endestasjon for ruten i begge retninger: + cout << "\nFram: Retningen: " << startStasjon << " - " + << endeStasjon << "\nTilbake: Retningen: " + << endeStasjon << " - " << startStasjon << '\n'; +} + /** * skriver rute forlengs eller baklengs * @@ -279,6 +302,14 @@ void Rute::skrivData() const { cout << startNavn << " - " << stoppNavn; } +/** + * @brief skrivKort() (virtuell) + * + */ +void Rute::skrivKort() const { + +} + /** * skriver rute til fil * diff --git a/rute.h b/rute.h index 320a9a6fba8bcd7767d9d61a3e0abba724124071..35d971a75df456a3ed3679dc105a05ba62009618 100644 --- a/rute.h +++ b/rute.h @@ -37,11 +37,13 @@ class Rute { bool erListeGyldig(); bool erTall(std::string nvn); bool finnesStopp(const int indeks); + void skrivRetninger() const; void skrivRute(const Retning retning); void slettData(); virtual void lesData(); virtual void skrivBeskrivelse(); virtual void skrivData() const; + virtual void skrivKort() const; virtual void skrivTilFil(std::ofstream & ut); diff --git a/ruter.cpp b/ruter.cpp index bb9a6eb6670480805d25a25a91a4752390210b8a..183fb886d69543ff1206533282aecaab13f29892 100644 --- a/ruter.cpp +++ b/ruter.cpp @@ -163,7 +163,38 @@ void Ruter::ruteBeskrivelse(const int ruteNr){ * ruteTabell() */ void Ruter::ruteTabell() { + int ruteNr; + char valg; + string navn; + //Rute* ruten = nullptr; + + if (!rutene.empty()) { // Hvis det er registrert ruter: + ruteNr = lesInt("Rutenr", MINRUTER, MAXRUTER); + if (ruteNrFinnes(ruteNr)) { // Hvis rutenummeret finnes: + auto ruten = rutene.find(ruteNr); // Iterator til riktig rute + ruten->second->skrivRetninger(); // Skriver kort info om ruten + valg = lesChar("Rutetabell for retningen (F/T)"); + // Looper til lovlig valg av retning: + while (valg != 'F' && valg != 'T') { + cout << "\nUgyldig valg, prøv igjen.\n"; + valg = lesChar("Rutetabell for retningen (F/T)"); + } + + ruten->second->skrivKort(); // Skriver info om rutetypen + + switch (valg) { // Skriver hele ruten: + case 'F': ruten->second->skrivRute(Fram); break; + case 'T': ruten->second->skrivRute(Tilbake); break; + } + + /*cout << "\n\nRutetabell for stoppestedet (navn): "; + getline(cin, navn);*/ + + } else // Hvis rutenummeret ikke finnes: + cout << "\nDette rutenummeret er ikke registrert.\n\n"; + } else // Hvis ingen ruter registrert: + cout << "\nIngen ruter registrert i programmet.\n\n"; } /**