Skip to content
Snippets Groups Projects

Frederik

1 file
+ 30
22
Compare changes
  • Side-by-side
  • Inline
+ 30
22
@@ -298,8 +298,11 @@ Stopp* Rute::finnStopp(int nr) {
*/
void Rute::fjernStopp() {
int sIndeks, lIndeks, sStoppNr, lStoppNr, //s=start, l=last
tid; //tid mellom naboer
string navn, navn2, sNavn, lNavn; //start og last
tid, //tid mellom naboer
tempI, //temp indeks for bytte
tempS; //temp stoppnummer for bytte
string navn, navn2, sNavn, lNavn, //start og last
tempN; //temp navn for bytte
Stopp* p1 = nullptr; //struct peker
Stopp* p2 = nullptr; //struct peker
Stoppested* sp1 = nullptr; //stoppested(vektor) peker
@@ -322,8 +325,6 @@ void Rute::fjernStopp() {
p1 = finnStopp(sIndeks+1);
if (finnesStopp(sIndeks+1)){ //sjekker at stopp finnes på lista.
sStoppNr=hentRuteIndeks(p1); //henter hvor på lista stoppet er
advance (itS, sStoppNr+1); //setter iterator start til en forbi stoppet
//fordi advance tar med selv stoppet det starter på, så må en forbi
navn = ""; //hopper ut av while.
}else {
cout << "\nStoppet finnes ikke på ruta!";
@@ -351,7 +352,6 @@ void Rute::fjernStopp() {
p2 = finnStopp(lIndeks+1);
if (finnesStopp(lIndeks+1) && sNavn!=lNavn && !erNabo(p1, p2)){
lStoppNr=hentRuteIndeks(p2);
advance (itL, lStoppNr);
navn2 = "";
}else {
cout << "\nStoppet finnes ikke på ruta!";
@@ -362,24 +362,32 @@ void Rute::fjernStopp() {
}
}
}
stoppene.erase(itS, itL); //fjerner alt mellom bruker start og slutt.
sp1 = gStoppestederBase.finnDuplikat(sNavn); //setter peker til vektoren på start navn
sp2 = gStoppestederBase.finnDuplikat(lNavn); //setter peker til vektoren på slutt navn
if(sp2->finnesNabo(sIndeks+1)){ //hvis de er naboer
tid = sp2->hentNaboTid(sIndeks); //hent tiden
p2->minutter=tid; //oppdater tiden i structen
cout << "Tiden mellom stoppestedene er allerede registrert som "
<< tid << "minutter.";
}else{ //hvis de ikke er naboer
tid=lesInt("Tid til fra forrige stopp", 1, 10); //leser inn tid mellom stopp
p2->minutter=tid; //oppdaterer tiden i struct
sp1->settNaboIndeks(lIndeks); //start stopp er nabo med slutt stopp
sp1->settNaboTid(tid); //oppdaterer tiden
sp2->settNaboIndeks(sIndeks); //slutt stopp er nabo med start stopp
sp2->settNaboTid(tid); //oppdaterer tiden
if(p1 > p2){
auto temp = itS; itS = itL; itL= temp; //bytter om iteratoren
tempI = sIndeks; sIndeks = lIndeks; lIndeks = tempI; //bytter indeks
tempN = sNavn; sNavn=lNavn; lNavn = tempN; //bytter navn
tempS = sStoppNr; sStoppNr = lStoppNr; lStoppNr = tempS; //bytter stoppnr
}
skrivKort();
skrivRute(Fram); //skriver ut oppdatert rute.
advance (itS, sStoppNr+1); //setter iterator start til en forbi stoppet
advance (itL, lStoppNr); //fordi advance tar med selv stoppet det starter på, så må en forbi
stoppene.erase(itS, itL); //fjerner alt mellom bruker start og slutt.
sp1 = gStoppestederBase.finnDuplikat(sNavn); //setter peker til vektoren på start navn
sp2 = gStoppestederBase.finnDuplikat(lNavn); //setter peker til vektoren på slutt navn
if(sp2->finnesNabo(sIndeks+1)){ //hvis de er naboer
tid = sp2->hentNaboTid(sIndeks); //hent tiden
p2->minutter=tid; //oppdater tiden i structen
cout << "Tiden mellom stoppestedene er allerede registrert som "
<< tid << "minutter.";
}else{ //hvis de ikke er naboer
tid=lesInt("Tid til fra forrige stopp", 1, 10); //leser inn tid mellom stopp
p2->minutter=tid; //oppdaterer tiden i struct
sp1->settNaboIndeks(lIndeks); //start stopp er nabo med slutt stopp
sp1->settNaboTid(tid); //oppdaterer tiden
sp2->settNaboIndeks(sIndeks); //slutt stopp er nabo med start stopp
sp2->settNaboTid(tid); //oppdaterer tiden
}
skrivKort();
skrivRute(Fram); //skriver ut oppdatert rute.
}
/**
Loading