Select Git revision
Code owners
Assign users and groups as approvers for specific file changes. Learn more.
rute.cpp 22.56 KiB
/**
* @file rute.cpp
* @author Andreas Blakli
*/
#include "rute.h"
using namespace std;
extern Stoppesteder* gStoppesteder;
/**
* Constructor for Rute objekt.
*
*/
Rute::Rute() {
}
/**
* Destructor for Rute objektet.
*
*/
Rute::~Rute() {
}
/**
* Lager ett nytt stopp i ruten.
*
* @param eksisterende - Indexen til ett eksisterende stoppested.
* @param pos - Posisjonen til iteratoren.
* @return Stopp* - Ett nytt stopp hvis alt stoppet er lovlig nullptr ellers.
*/
Stopp* Rute::ny(const int& eksisterende, int pos) {
string stoppPlass = "";
Stoppested *stoppested, *forrigeStoppested;
Stopp *stopp, *forrigeStopp;
stoppested = nullptr;
stopp = nullptr;
bool forsteStopp = true;
do {
forrigeStoppested = stoppested;
forrigeStopp = stopp;
if (eksisterende != -1) {
forrigeStoppested = gStoppesteder->hentEksisterende(eksisterende);
forrigeStopp = new Stopp;
forrigeStopp->indexStoppested = eksisterende;
}
stopp = new Stopp;
stoppested = nullptr;
if (alleStoppestedenePaaRuten.size() > 0) forsteStopp = false;
cout << "\nSkriv inn navn eller nummer på stoppeplass du ønsker "
<< "å legge til (blankt for avbryt):";
getline(cin, stoppPlass);
// Strengen ikke er tom
if (!stoppPlass.empty()) {
stoppPlass = hjelp.rensStreng(stoppPlass);
if (!hjelp.erBokstav(stoppPlass)) {
// Hvis tall
stoppested = gStoppesteder->hentEksisterende(stoi(stoppPlass) - 1);
} else
// Else bokstav(r)
stoppested = gStoppesteder->hentEksisterende(stoppPlass);
// Hvis stoppestedet ikke eksisterer fra før og input er bokstaver
if (stoppested == nullptr && hjelp.erBokstav(stoppPlass)) {
cout << "\nError: Stoppested eksisterer ikke!" << '\n'
<< "Oppretter nytt stoppsted basert på forrige gitte parameter."
<< '\n';