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

forsøk på RN

parent 7ac3ef4c
No related branches found
No related tags found
1 merge request!1Frederik
......@@ -4,6 +4,7 @@
* @file rute.cpp
* @author Sondre Sand & Frederik Simonsen
*/
#include <algorithm>
#include <iostream>
#include <iomanip>
#include <list>
......@@ -53,13 +54,64 @@ Stopp::Stopp(const int stoppNr, const int antMin) {
*/
void Rute::lesData() {
string navn,
fNavn;
fNavn,
nNavn;
int stoppNr = 0,
indeks = 0,
naboIndeks = 0,
tidTilF = 0,
tidTilE = 0;
Stopp* nyStopp = nullptr;
Stoppested* fStopp = nullptr;
Stoppested* nStopp = nullptr;
cout << "\nStoppested (entydig navn / tall / ENTER for å avslutte): ";
getline(cin, navn); //TODO fortsette her
/*while (navn.size() != 0) {
while (navn.size() != 0) {
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
navn = gStoppestederBase.hentNavnVhaIndeks(stoppNr); // Hent navn
}
fNavn = gStoppestederBase.finnEntydig(navn); // Sjekker for entydighet
if (fNavn.size() > 0) { // Hvis entydig navn:
cout << '\n' << fNavn << '\n';
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
} else { // Hvis nabo ikke finnes fra før:
}
} else { // Hvis første stopp på ruten
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
}
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
fStopp = nStopp; // Setter forrige stopp til å bli nåværende stopp
} 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);
}*/
}
}
/**
......@@ -151,3 +203,7 @@ void Rute::skrivRute(const Retning retning) {
}
}
}
bool Rute::erTall(std::string nvn) {
return all_of(nvn.begin(), nvn.end(), ::isdigit);
}
\ No newline at end of file
......@@ -33,6 +33,7 @@ class Rute {
public:
Rute();
Rute(std::ifstream & inn);
bool erTall(std::string nvn);
virtual void lesData();
virtual void skrivData() const;
virtual void skrivTilFil(std::ofstream & ut);
......
......@@ -9,6 +9,7 @@
#include <string>
#include <fstream>
#include <vector>
#include <algorithm>
#include "stoppested.h"
#include "stoppesteder.h"
using namespace std;
......@@ -93,3 +94,14 @@ void Stoppested::skrivNaboerOgTid() {
cout << "Dette stoppestedet har ingen nabostopp.\n\n";
}
/**
* finnesNabo(...)
*/
bool Stoppested::finnesNabo(const int nr) {
auto it = find(nabostopper.begin(), nabostopper.end(), nr);
if (it != nabostopper.end()) { // Hvis nabostoppen finnes i vector:
return true;
} // Hvis ingen funn:
return false;
}
\ No newline at end of file
......@@ -192,6 +192,20 @@ void Stoppesteder::skrivTilFil() {
utfil.close();
}
/**
* hentIndeksVhaNavn(...)
*/
int Stoppesteder::hentIndeksVhaNavn(const string nvn) {
string navn;
for (int i = 0; i < stopper.size(); i++) {
navn = stopper[i]->hentStoppestedNavn();
if(navn == nvn) {
return i;
}
}
return -1;
}
/**
* hentNavnVhaIndeks(...)
*/
......
0% Loading or .
You are about to add 0 people to the discussion. Proceed with caution.
Please register or to comment