Skip to content
Snippets Groups Projects
Select Git revision
  • 76e3ff1eb4e0d33f706af540e2a58f36b08183d3
  • main default
2 results

rute.cpp

Blame
  • 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';