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/const.h b/const.h
index fb61d7f96a7ffe642dc2382bebd5b2e7520c402d..79d420f2ad4d71a6609fdee7baad450fe3b6e3ae 100644
--- a/const.h
+++ b/const.h
@@ -18,5 +18,7 @@ const int MINSITT = 20;    ///< Minimum antall sitteplasser på en buss
 const int MAXSITT = 80;    ///< Maksimum antall sitteplasser på en buss
 const int MINSTAA = 10;    ///< Minimum antall ståplasser på en buss
 const int MAXSTAA = 40;    ///< Maksimum antall ståplasser på en buss
+const int MINTID = 6;      ///< Minimum tid mellom avganger
+const int MAXTID = 120;    ///< Maksimum tid mellom avganger
 
 #endif
diff --git a/rute.cpp b/rute.cpp
index cfa5f54210e1698651322bcc8740caa84c5831b3..3742fc395744f2a3275f6b3a58864937441803d6 100644
--- a/rute.cpp
+++ b/rute.cpp
@@ -1,6 +1,6 @@
 /**
  * Kode-fil for rute-klassen
- * 
+ *
  * @file rute.cpp
  * @author Sondre Sand & Frederik Simonsen
  */
@@ -9,6 +9,7 @@
 #include <iomanip>
 #include <list>
 #include <fstream>
+#include "const.h"
 #include "rute.h"
 #include "stoppested.h"
 #include "stoppesteder.h"
@@ -22,9 +23,9 @@ extern Stoppesteder gStoppestederBase;
 
 /**
  *  Construct a new Stopp:: Stopp object
- * 
- * @param stoppNr 
- * @param antMin 
+ *
+ * @param stoppNr
+ * @param antMin
  */
 Stopp::Stopp(const int stoppNr, const int antMin) {
     nr = stoppNr; minutter = antMin;
@@ -32,17 +33,26 @@ Stopp::Stopp(const int stoppNr, const int antMin) {
 
 /**
  * Henter en stopps unike nr
- * 
+ *
  * @return Et stoppesteds unike nr
  */
 int Stopp::hentNr() {
     return nr;
 }
 
+/**
+ * @brief henter minutter fra forrige stopp
+ *
+ * @return int
+ */
+int Stopp::hentMin() {
+    return minutter;
+}
+
 /**
  * skrivTilFil(...)
- * 
- * @param ut 
+ *
+ * @param ut
  */
 void Stopp::skrivTilFil(ofstream & ut) {
     ut << nr << ' ' << minutter << '\n';
@@ -60,7 +70,7 @@ Rute::Rute() {
 
 /**
  * Opretter en ny rute fra fil
- * 
+ *
  * @param inn filen det leses fra
  */
 Rute::Rute(ifstream & inn) {
@@ -77,9 +87,9 @@ Rute::Rute(ifstream & inn) {
 
 /**
  * -sjekker om lista er mer en 1 entry.
- * 
- * @return true 
- * @return false 
+ *
+ * @return true
+ * @return false
  */
 bool Rute::erListeGyldig(){
     if(stoppene.size() > 1){
@@ -88,18 +98,24 @@ 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);
 }
 
 /**
  * Sjekker om stopp er lagt til i ruta allerede
- * 
- * @param nr 
- * @return true 
+ *
+ * @param nr
+ * @return true
  * @return false
- * @see Stopp::hentNr() 
+ * @see Stopp::hentNr()
  */
 bool Rute::finnesStopp(const int indeks) {
     for (auto it = stoppene.begin(); it != stoppene.end(); it++) {
@@ -110,8 +126,173 @@ bool Rute::finnesStopp(const int indeks) {
 }
 
 /**
- * skriver rute forlengs eller baklengs
+ * Funksjon for å sjekke om et klokkeslett er gyldig (00:00-23:59)
+ *
+ * @param time
+ * @param minutt
+ * @return true
+ * @return false
+ */
+bool Rute::gyldigTid(const int time, const int minutt) {
+    if ((time >= 0 && time <= 23) && (minutt >= 0 && minutt <= 59)) {
+        return true;
+    } else
+        return false;
+}
+
+int Rute::finnDifferanse(const int nr, const Retning retning) {
+    int totMin = 0;
+    if (retning == Fram) {
+        for (auto it = stoppene.begin(); it != stoppene.end(); it++) {
+            totMin += (*it)->hentMin();
+            if ((*it)->hentNr() == nr)
+                return totMin;
+        }
+    } else if (retning == Tilbake) {
+        for (auto it = stoppene.rbegin(); it != stoppene.rend(); it++) {
+            if ((*it)->hentNr() == nr)
+                return totMin;
+            totMin += (*it)->hentMin();
+        }
+    }
+    return -1; // Skal ikke skje
+}
+
+string Rute::hentNavn(const Retning retning) {
+    string startSted;
+    if (retning == Fram) {
+    startSted = gStoppestederBase.hentNavnVhaIndeks(stoppene.front()->hentNr());
+    } else if (retning == Tilbake)
+        startSted = gStoppestederBase.hentNavnVhaIndeks(stoppene.back()->hentNr());
+
+   return startSted;
+}
+
+/**
+ * 
  * 
+ * @param diff - differanse mellom startsted og aktuelt stoppested i minutter
+ * @param start - faktisk startstedsnavn på ruten
+ * @param stSted - faktisk navn på aktuellt stoppested
+ * @see Rute::gyldigTid(...)
+ */
+void Rute::ruteTabell(const int diff, const string start, const string stSted) {
+    int startT, // starttime
+        startTotal, // regner ut total starttid i minutter
+        sluttT, // slutt-time
+        sluttTotal, // regner ut total slutttid i minutter
+        startM, // startminutter
+        sluttM, // slutt-minutter
+        tidMellom, // Tid mellom hver avgang i minutter
+        tPrint, // hjelpevariabel for å sørge for korrekt utskrift av time
+        antGanger, // omregning for å legge inn riktig antall avgangstider
+        startTid, // omregning for å legge inn starttid
+        n, // hjelpevariabel for linjeskift ved ny time
+        timer, // hjelpevariabel for å skrive ut time
+        minutter, // hjelpevariabel for å skrive ut minutter
+        avgangsTid, // omregning for å legge inn riktig avgangstid
+        mPrint; // hjelpevariabel for å sørge for korrekt utskrift av minutter
+    vector <int> avgangstider; // Hjelpevektor for å ta vare på avgangstider
+
+    cout << "\nRuteavganger fra startstedet (" << start << ") - "
+         << "avslutt med 0 0):\n\n";
+
+    cout << "Fra kl. (00:01 - 23:59): ";
+    cin >> startT >> startM; cin.ignore(); // Leser starttid
+
+
+    while (!gyldigTid(startT, startM)) { // Sørger for at starttid er gyldig
+        cout << "\nUlovlig klokkeslett. Prøv igjen (tt mm): ";
+        cin >> startT >> startM; cin.ignore();
+    }
+    startTid = (startT*60)+startM; // Regner ut første avgangstid
+    n = startT; // Setter indikator til å være første starttime
+
+
+    while (startT != 0 || startM != 0) { // Så lenge bruker ikke taster 0 0
+        avgangstider.push_back(startTid+diff); // Legger start tid i vector
+        // Leser tid mellom avganger
+        tidMellom = lesInt("Tid mellom avganger", MINTID, MAXTID);
+        startTotal = (startT*60)+startM+tidMellom; // Omregner for sjekk
+        tPrint = startTotal/60; // Regner ut gyldig utskrift:
+        mPrint = startTotal%60;
+
+        cout << "Til kl. (" << ((tPrint < 10) ? "0" : "") << tPrint
+             << ':' << ((mPrint < 10) ? "0" : "") << mPrint
+             << " - 23:59): ";
+        // Leser slutt tid
+        cin >> sluttT >> sluttM; cin.ignore();
+        sluttTotal = (sluttT*60)+sluttM; // Omregner for sjekk
+        // Sørger for lovlig slutt-tid
+        while (!gyldigTid(sluttT, sluttM) || sluttTotal < startTotal) {
+            cout << "\nUlovlig klokkeslett. Prøv igjen (tt mm): ";
+            cin >> sluttT >> sluttM; cin.ignore();
+            sluttTotal = (sluttT*60)+sluttM; // Omregner for sjekk
+        }
+
+        antGanger = ((sluttT-startT)*60)/tidMellom; // Omregning for loop
+        avgangsTid = startTid+diff; // Setter på differanse en gang
+
+        for (int i = 0; i < antGanger; i++) { // Legger til riktig antall avgangstider:
+            avgangsTid = avgangsTid + tidMellom; // Omregning
+            avgangstider.push_back(avgangsTid); // Legges i vektor
+        }
+
+        tPrint = (sluttTotal+1)/60; // Regner ut gyldig utskrift:
+        mPrint = (sluttTotal+1)%60;
+
+
+        cout << "\n\nFra kl. (" << ((tPrint < 10) ? "0" : "") <<  tPrint
+             << ':' << ((mPrint < 10) ? "0" : "") << mPrint
+             << " - 23:59): ";
+        cin >> startT >> startM; cin.ignore(); // Leser ny starttid
+        startTotal = (startT*60)+startM; // Omregning
+        // Sørger for ny lovlig starttid:
+        while ((!gyldigTid(startT, startM) || startTotal <= sluttTotal)
+                && (startT != 0 || startM != 0)) { // Sørger for at starttid er gyldig
+            cout << "\nUlovlig klokkeslett. Prøv igjen (tt mm): ";
+            cin >> startT >> startM; cin.ignore();
+            startTotal = (startT*60)+startM; // Omregning
+        }
+        startTid = (startT*60)+startM; // Omregning
+    }
+    cout << "\n\nRutetabell for stoppested: " << stSted << "\n\n"
+         << ((n < 10) ? "0" : "") << n << ':';
+
+    for (int i = 0; i < avgangstider.size(); i++) { // For hver avgangstid:
+        timer = avgangstider[i]/60; // Regner ut time
+        minutter = avgangstider[i]%60; // Regner ut minutter
+        if (timer == n) { // Skriver ut minutter hvis time er lik indikator
+            cout << ' ' << ((minutter < 10) ? "0" : "") << minutter;
+        } else { // Skriver ut time hvis timer er mer enn indikator
+            cout << '\n' << ((timer < 10) ? "0" : "")
+                 << timer << ':' << ' ' << ((minutter < 10) ? "0" : "")
+                 << minutter;
+            n = timer; // Oppdaterer indikator
+        }
+    }
+}
+
+/**
+ * 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
+ *
  * @param retning forlengs eller baklengs
  * @see Stoppesteder::hentNavnVhaIndeks(...)
  */
@@ -120,7 +301,7 @@ void Rute::skrivRute(const Retning retning) {
         indeks = 0,
         totMin = 0;
     string navn;
-    
+
     if (retning == Fram) {
         for (auto it = stoppene.begin(); it != stoppene.end(); it++) {
             indeks = (*it)->nr;
@@ -148,7 +329,7 @@ void Rute::skrivRute(const Retning retning) {
 
 /**
  * @brief - sletter siste entry i stoppene.
- * 
+ *
  */
 void Rute::slettData(){
     stoppene.clear();
@@ -156,7 +337,7 @@ void Rute::slettData(){
 
 /**
  * Leser og oppretter stopp for en ny rute
- * 
+ *
  * @see Stoppesteder::byttBokstaver(...)
  * @see Stoppesteder::finnesIndex(...)
  * @see Stoppesteder::hentNavnVhaIndex(...)
@@ -180,19 +361,19 @@ void Rute::lesData() {
     Stopp* nyStopp = nullptr;
     Stoppested* fStopp = nullptr;
     Stoppested* nStopp = nullptr;
-    
+
     cout << "\nStoppested (entydig navn / tall / ENTER for å avslutte): ";
-    getline(cin, navn); 
+    getline(cin, navn);
     while (navn.size() > 0) {  //Kjør så lenge ikke blank/enter er trykket.
         navn = gStoppestederBase.byttBokstaver(navn); // Fjerner æøåÆØÅ
-        
+
         if (erTall(navn)) {  // SJekker om navn kun består av tall
             stoppNr = stoi(navn); //Hvis kun tall, gjør om til int
             if(gStoppestederBase.finnesIndeks(stoppNr-1)){ //@see finnesIndeks, funker dette?
             navn = gStoppestederBase.hentNavnVhaIndeks(stoppNr); // Hent navn
             }
     }
-        
+
         fNavn = gStoppestederBase.finnEntydig(navn); // Sjekker for entydighet
 
         if (fNavn.size() > 0) { // Hvis entydig navn:
@@ -209,7 +390,7 @@ void Rute::lesData() {
                     naboIndeks = indeks;
                     cout << "\nTiden mellom stoppestedene er allerede registrert som "
                          << tidTilF << " minutter.\n";
-                        
+
 
                 } else { // Hvis nabo ikke finnes fra før:
                     tidTilF = lesInt("Tid fra forrige stopp", 1, 10); // Leser tid til forrige nabo
@@ -238,10 +419,10 @@ void Rute::lesData() {
         } else { // Hvis ikke entydig:
             cout << "\nIkke funnet (den entydige) stoppestedet!\n";
         }
-        
+
         // Forsøker å lese evt. ny eller korrekt stopp:
         cout << "\nStoppested (entydig navn / tall / ENTER for å avslutte): ";
-        getline(cin, navn); 
+        getline(cin, navn);
     }
     cout << "\nOk, du angrer og ønsker ikke å legge til ny rute.\n";
 }
@@ -249,7 +430,7 @@ void Rute::lesData() {
 /**
  * skrivBeskrivelse()
  * skriver forlengs og baklengs
- * 
+ *
  * @see Rute::skrivRute(...)
  */
 void Rute::skrivBeskrivelse() {
@@ -262,7 +443,7 @@ void Rute::skrivBeskrivelse() {
 /**
  * Skriver ut en rute
  * Første-siste stopp
- * 
+ *
  * @see Stoppesteder::hentNavnVhaIndeks(...)
  */
 void Rute::skrivData() const {
@@ -270,7 +451,7 @@ void Rute::skrivData() const {
         stoppIndeks;
     string startNavn,
            stoppNavn;
-    
+
     startIndeks = stoppene.front()->hentNr(); // Henter startsteds unike nr
     stoppIndeks = stoppene.back()->hentNr(); // Henter stopsteds unike nr
     startNavn = gStoppestederBase.hentNavnVhaIndeks(startIndeks);
@@ -279,9 +460,17 @@ void Rute::skrivData() const {
     cout << startNavn << " - " << stoppNavn;
 }
 
+/**
+ * @brief skrivKort() (virtuell)
+ *
+ */
+void Rute::skrivKort() const {
+
+}
+
 /**
  * skriver rute til fil
- * 
+ *
  * @param ut fila det skrives til
  * @see Stopp::skrivTilFil(...)
  */
diff --git a/rute.h b/rute.h
index 320a9a6fba8bcd7767d9d61a3e0abba724124071..7a2fb28a81614139ecebfb0e32419397ee65741f 100644
--- a/rute.h
+++ b/rute.h
@@ -9,6 +9,7 @@
 #define __RUTE_H
 
 #include <list>
+#include <string>
 #include <fstream>
 #include "enum.h"
 
@@ -19,6 +20,7 @@ struct Stopp {
     int nr, minutter; // Litt usikker på om denne skal deklareres slik
                       // Eller om den skal under public eller private i Rute
     Stopp(const int stoppNr, const int antMin);
+    int hentMin();
     int hentNr();
     void skrivTilFil(std::ofstream & ut);
 
@@ -36,12 +38,19 @@ class Rute {
         Rute(std::ifstream & inn);
         bool erListeGyldig();
         bool erTall(std::string nvn);
+        bool gyldigTid(const int time, const int minutt);
         bool finnesStopp(const int indeks);
+        int finnDifferanse(const int nr, const Retning retning);
+        std::string hentNavn(const Retning retning);
+        void ruteTabell(const int diff, const std::string start,
+                        const std::string stSted);
+        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 56e3914b61d5278eb68b8642b37e02677c9f375b..ecc1c4b9b7c35f7bb90ea0432693a5f64d4391dd 100644
--- a/ruter.cpp
+++ b/ruter.cpp
@@ -103,29 +103,29 @@ void Ruter::nyRute() {
 
     if (!gStoppestederBase.tom()) { // Hvis det finnes stoppesteder registrert:
         ruteNr = lesInt("Rutenr", MINRUTER, MAXRUTER);
-        // Looper til ikke duplikat rutenr blir skrevet inn
-        while (ruteNrFinnes(ruteNr)) { 
-            cout << "\nDuplikat ruteNr, vennligst prøv igjen.\n";
-            ruteNr = lesInt("Rutenr", MINRUTER, MAXRUTER); 
-        }
+        // Hvis ikke duplikat rutenr blir skrevet inn:
+        if (!ruteNrFinnes(ruteNr)) {
 
-        ruteType = lesChar("Rutetype b(A)ne eller b(U)ss");
-        // Looper til lovlig valg av rutetype blir lest inn:
-        while (ruteType != 'A' && ruteType != 'U') {
-            cout << "\nUgyldig valg, prøv igjen.\n";
             ruteType = lesChar("Rutetype b(A)ne eller b(U)ss");
-        }
+            // Looper til lovlig valg av rutetype blir lest inn:
+            while (ruteType != 'A' && ruteType != 'U') {
+                cout << "\nUgyldig valg, prøv igjen.\n";
+                ruteType = lesChar("Rutetype b(A)ne eller b(U)ss");
+            }
 
-        switch (ruteType) {
-            case 'A': nyRute = new Bane; nyRute->lesData(); break;
-            case 'U': nyRute = new Buss; nyRute->lesData(); break;
-        }
+            switch (ruteType) {
+                case 'A': nyRute = new Bane; nyRute->lesData(); break;
+                case 'U': nyRute = new Buss; nyRute->lesData(); break;
+            }
 
-        if(nyRute->erListeGyldig()){
-            rutene[ruteNr] = nyRute;
-            cout << "\nNy rute er lagt til:\n";
-            ruteBeskrivelse(ruteNr);
-        }else nyRute->slettData();
+            if (nyRute->erListeGyldig()){
+                rutene[ruteNr] = nyRute;
+                cout << "\nNy rute er lagt til:\n";
+                ruteBeskrivelse(ruteNr);
+            } else nyRute->slettData();
+
+        } else // Rutenummer er duplikat:
+            cout << "\nRutenummeret finnes fra før. Kan ikke legge til rute.\n\n";
 
     } else // Hvis ingen stoppesteder registrert:
         cout << "\nIngen stopper registrert i datastrukturen, kan derfor ikke "
@@ -163,7 +163,72 @@ void Ruter::ruteBeskrivelse(const int ruteNr){
  * ruteTabell()
  */
 void Ruter::ruteTabell() {
+    int ruteNr,
+        stoppNr,
+        diff;
+    char valg;
+    string navn,
+           startSted;
+    //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);
+                          startSted = ruten->second->hentNavn(Fram); break;
+                case 'T': ruten->second->skrivRute(Tilbake); 
+                          startSted = ruten->second->hentNavn(Tilbake); break;
+            }
+
+            cout << "\n\nRutetabell for stoppestedet (navn): ";
+            getline(cin, navn);
+            navn = gStoppestederBase.byttBokstaver(navn); // bytter æøåÆØÅ
+            navn = gStoppestederBase.finnEntydig(navn); // Sjekker for entydighet
+            
+            if (navn.size() > 0) { // Hvis navn er entydig:
+                // Henter stoppestedets unike nr:
+                stoppNr = gStoppestederBase.hentIndeksVhaNavn(navn) + 1;
+                //Hvis stoppestedet finnes på ruten:
+                if (ruten->second->finnesStopp(stoppNr)) {
+                    switch (valg) {
+                        case 'F': diff =
+                                  ruten->second->finnDifferanse(stoppNr, Fram);
+                                                                         break;
+                                  // Henter differanse ved retning fram
+                        case 'T': diff =
+                                  ruten->second->finnDifferanse(stoppNr, Tilbake);
+                                                                         break;
+                                  // Henter differanse ved retning tilbake
+                    }
+                    
+                    //diff = ruten->second->finnDifferanse(stoppNr);
+                    //startSted = ruten->second->hentNavn(Fram);
+                    ruten->second->ruteTabell(diff, startSted, navn);
+
+                } else // Hvis stoppet ikke finnes på ruten:
+                    cout << "\nStoppestedet " << navn << " finnes ikke "
+                         << "på denne ruten!\n\n";
+            
+            } else
+                cout << "\nIngen entydige stoppestedsnavn funnet\n\n";
+            
 
+        } 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";
 }
 
 /**
diff --git a/stoppesteder.cpp b/stoppesteder.cpp
index f919e9bab986013d67e81a2ea3bde5936066c70d..6d6adc024d1ee5d1ee6574e23ef5c7c2d6a426ee 100644
--- a/stoppesteder.cpp
+++ b/stoppesteder.cpp
@@ -33,6 +33,16 @@ bool Stoppesteder::finnesIndeks(const int nr){
     return false; // Ingen funn
 }
 
+/**
+ * sjekker om en string inneholder tall.
+ * 
+ * @param nvn 
+ * @return true hvis ikke tall
+ * @return false hvis har tall
+ */
+bool Stoppesteder::ikkeHarTall(const string nvn){
+    return any_of(nvn.begin(), nvn.end(), ::isdigit);
+}
 /**
  * Sjekker om Stoppesteder sin vektor er tom eller ei
  *
@@ -224,6 +234,7 @@ void Stoppesteder::lesFraFil() {
 /**
  * Legger til et nytt stoppested i datastrukturen, hvis mulig (ingen duplikat)
  *
+ * @see Stoppesteder::ikkeHarTall(...)
  * @see Stoppesteder::byttBokstaver(...)
  * @see Stoppesteder::finnDuplikat(...)
  * @see Stoppested::Stoppested(...)
@@ -234,8 +245,9 @@ void Stoppesteder::nyStop() {
     // TODO: Lag en funksjon som sørger for at et stoppesteds navn ikke
     // TODO: kun kan være tall!
     cout << "\nNavn på stoppested: "; getline(cin,navn); // Leser navn
-    while (navn.size() < 2) { // Looper hvis navn er >2 tegn
-        cout << "\nNavn må være 2 tegn eller mer. Prøv igjen: ";
+    while (navn.size() < 2 || ikkeHarTall(navn)) { // Looper hvis navn er >2 tegn
+        cout << "\nNavn kan ikke inneholde tall, og må være 2 tegn eller mer."
+             << " Prøv igjen: ";
         getline(cin, navn);
     }
 
@@ -303,7 +315,7 @@ void Stoppesteder::skrivStopp() {
         // TODO: kun kan være tall!
         cout << "\nAlt om stoppestedet: "; getline(cin, navn);
 
-        while (navn.size() < 2) { // Sørger for at navn må ha mer enn 1 tegn
+        while (navn.size() < 1) { // Sørger for at navn være minst 1 tegn
             cout << "\nNavn må være 2 tegn eller mer. Prøv igjen: ";
             getline(cin, navn);
         }
diff --git a/stoppesteder.h b/stoppesteder.h
index aaa8d4c0670d933830d06e03c3630a66e7956eed..e7b1ac27d1893db4ae7c7da81a89f26fc9fbbdc8 100644
--- a/stoppesteder.h
+++ b/stoppesteder.h
@@ -20,6 +20,7 @@ class Stoppesteder {
         std::vector <Stoppested*> stopper;
     public:
         bool finnesIndeks(const int nr);
+        bool ikkeHarTall(const std::string nvn);
         bool tom();
         int hentIndeksVhaNavn(const std::string nvn);
         std::string byttBokstaver(const std::string nvn);