Skip to content
Snippets Groups Projects
Commit 69d63847 authored by Frederik Simonsen's avatar Frederik Simonsen
Browse files

forsøk R N

parent e5d7e1d7
No related branches found
No related tags found
1 merge request!1Frederik
......@@ -12,6 +12,7 @@
#include "rute.h"
#include "stoppested.h"
#include "stoppesteder.h"
#include "LesData3.h"
using namespace std;
extern Stoppesteder gStoppestederBase;
......@@ -59,8 +60,7 @@ void Rute::lesData() {
int stoppNr = 0,
indeks = 0,
naboIndeks = 0,
tidTilF = 0,
tidTilE = 0;
tidTilF = 0;
Stopp* nyStopp = nullptr;
Stoppested* fStopp = nullptr;
Stoppested* nStopp = nullptr;
......@@ -72,6 +72,7 @@ void Rute::lesData() {
if (erTall(navn)) { // SJekker om navn kun består av tall
stoppNr = stoi(navn); //Hvis kun tall, gjør om til int
// Trenger en sjekk om stoppnr faktisk finnes, hvis det gjør det, gjør neste linje *
navn = gStoppestederBase.hentNavnVhaIndeks(stoppNr); // Hent navn
}
......@@ -82,24 +83,40 @@ void Rute::lesData() {
indeks = gStoppestederBase.hentIndeksVhaNavn(fNavn);
if (stoppene.size() > 0) { // Hvis ikke første stopp på ruten
if (fStopp->finnesNabo(indeks)) { // Hvis nabo finnes fra før
if (fStopp->finnesNabo(indeks+1)) { // Hvis nabo finnes fra før
naboIndeks = fStopp->hentNaboIndeks(indeks+1);
tidTilF = fStopp->hentNaboTid(naboIndeks);
// Stemmer naboindeks, eller må vi bruke en ny int her e.l. *
nyStopp = new Stopp(naboIndeks, tidTilF);
stoppene.push_back(nyStopp); // Disse kan gjøres etter ?*
naboIndeks = indeks;
} else { // Hvis nabo ikke finnes fra før:
tidTilF = lesInt("Tid fra forrige stopp", 1, 10); // Leser tid til forrige nabo
//indeks = gStoppestederBase.hentIndeksVhaNavn(fNavn); // Finner egen indeks
nStopp = gStoppestederBase.finnDuplikat(fNavn); // Finner egen peker
fStopp->settNaboIndeks(indeks); // Oppdaterer forrige stopps nabovektor
fStopp->settNaboTid(tidTilF); // Oppdaterer forrige stopps tid til nabo
nStopp->settNaboIndeks(naboIndeks); // Oppdaterer nåværende stopps nabovektor
nStopp->settNaboTid(tidTilF); // Oppdaterer naværende stopps tid til nabo
nyStopp = new Stopp(indeks+1, tidTilF); // Oppretter ny stopp på ruten
stoppene.push_back(nyStopp); // Stoppen legges til ruten
naboIndeks = indeks;
}
} else { // Hvis første stopp på ruten
indeks = gStoppestederBase.hentIndeksVhaNavn(fNavn); // Riktig indeks
// indeks = gStoppestederBase.hentIndeksVhaNavn(fNavn); // Riktig indeks
nStopp = gStoppestederBase.finnDuplikat(fNavn); // Peker til riktig
nyStopp = new Stopp(indeks+1, 0); // Setter stopp sitt nr
// til å korrespondere med indeks i vector, og tid til
// forrige nabo å være 0, da første stopp på ruten
stoppene.push_back(nyStopp); // Legges til listen
naboIndeks = indeks;
}
// ?*
nNavn = fNavn; // Setter nåværende nabo til å være forrige navn
naboIndeks = indeks; // Setter nabos indeks til å være forrige indeks
tidTilE = tidTilF; // Setter tid til neste stopp, til å være egen tid
//naboIndeks = indeks; // Setter nabos indeks til å være forrige indeks
//tidTilE = tidTilF; // Setter tid til neste stopp, til å være egen tid
fStopp = nStopp; // Setter forrige stopp til å bli nåværende stopp
} else { // Hvis ikke entydig:
......
......@@ -100,7 +100,9 @@ void Ruter::nyRute() {
case 'U': nyRute = new Buss; nyRute->lesData(); break;
}
// En funksjon for å sjekke om ruten er gyldig (list.size() > 1, return true)
// Hvis ruten er gyldig, legg til i mappet
// Hvis ugyldig rute, rydd opp i pekere *
......
......@@ -105,3 +105,35 @@ bool Stoppested::finnesNabo(const int nr) {
} // Hvis ingen funn:
return false;
}
/**
* settNaboIndeks(...)
*/
void Stoppested::settNaboIndeks(const int nr) {
nabostopper.push_back(nr+1);
}
/**
* settNaboTid(...)
*/
void Stoppested::settNaboTid(const int nr) {
tidtilnabo.push_back(nr);
}
/**
* hentNaboIndeks(...)
*/
int Stoppested::hentNaboIndeks(const int nr) {
auto it = find(nabostopper.begin(), nabostopper.end(), nr);
if (it != nabostopper.end()) {
return distance(nabostopper.begin(), it);
}
return -1;
}
/**
* hentNaboTid(...)
*/
int Stoppested::hentNaboTid(const int nr) {
return tidtilnabo[nr];
}
\ No newline at end of file
......@@ -31,6 +31,10 @@ class Stoppested {
void skrivNaboerOgTid();
void skrivTilFil(std::ofstream & ut);
bool finnesNabo(const int nr);
void settNaboIndeks(const int nr);
void settNaboTid(const int nr);
int hentNaboIndeks(const int nr);
int hentNaboTid(const int nr);
};
#endif
\ No newline at end of file
......@@ -203,7 +203,7 @@ int Stoppesteder::hentIndeksVhaNavn(const string nvn) {
return i;
}
}
return -1;
return -1; // Skal ikke skje
}
/**
......
0% Loading or .
You are about to add 0 people to the discussion. Proceed with caution.
Please register or to comment