Skip to content
Snippets Groups Projects
Select Git revision
  • 0dfdd9daef1043117f1c6bbd5d926c5ecbbe3c8d
  • main default
  • frederik
  • Sondre
4 results

ruter.cpp

Blame
  • Code owners
    Assign users and groups as approvers for specific file changes. Learn more.
    ruter.cpp 11.61 KiB
    /**
     * Kode-fil for ruter-klassen
     * 
     * @file ruter.cpp
     * @author Sondre Sand & Frederik Simonsen
     */
    #include <fstream>
    #include <iostream>
    #include <map>
    #include "LesData3.h"
    #include "ruter.h"
    #include "rute.h"
    #include "bane.h"
    #include "buss.h"
    #include "const.h"
    #include "stoppesteder.h"
    using namespace std;
    
    extern Stoppesteder gStoppestederBase; // Henter inn globalt objekt
    
    /**
     * Sletter allokert minne i Ruter-mappet
     */
    Ruter::~Ruter() {
        for (auto it = rutene.begin(); it != rutene.end(); it++)
            delete it->second; // Sletter det tilpekte
        rutene.clear(); // Tømmer mappet for pekere
    }
    
    /**
     * Sjekker om et gitt ruteNr finnes i datastrukturen
     * 
     * @param ruteNr - Et ruteNr som skal sjekkes om finnes eller ei
     * @return true - Rutenr finnes i datastrukturen
     * @return false - Rutenr finnes ikke i datastrukturen
     */
    bool Ruter::ruteNrFinnes(const int ruteNr) {
        return rutene.count(ruteNr);
    }
    
    /**
     * endreRute()
     */
    void Ruter::endreRute() {
        int ruteNr;
        char valg;
    
        if (!rutene.empty()) { // Hvis det finnes ruter registrert:
            ruteNr = lesInt("Rutenr", MINRUTER, MAXRUTER);
    
            if (ruteNrFinnes(ruteNr)) { // Hvis rutenummeret finnes:
                auto ruten = rutene.find(ruteNr); // Iterator til rett rute
                ruten->second->skrivKort(); // Skriver egen info
                ruten->second->skrivRute(Fram); // Skriver ruta
                cout << '\n';
                // Leser valg fra bruker:
                valg = lesChar("F(jerne intervall) eller S(mette inn)");
                // Looper til lovlig valg fra bruker:
                while (valg != 'F' && valg != 'S') {
                    cout << "\nUgyldig valg, prøv igjen. F og S er gyldig\n";
                    valg = lesChar("F(jerne intervall) eller S(mette inn)");
                }
    
                switch (valg) { // Sender til rett funksjon etter brukervalg:
                    case 'F': ruten->second->fjernStopp();    break;
                    case 'S': ruten->second->smettStopp();    break;
                }
    
            } else // Rutenummeret finnes ikke:
                cout << "\nIngen ruter registrert med dette nummeret.\n\n";