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

sortering og kommentering stoppested

parent 46809613
No related branches found
No related tags found
1 merge request!3Frederik
......@@ -9,12 +9,12 @@
#include <string>
#include <fstream>
#include <vector>
#include <algorithm>
#include <algorithm> // find, distance
#include "stoppested.h"
#include "stoppesteder.h"
using namespace std;
extern Stoppesteder gStoppestederBase;
extern Stoppesteder gStoppestederBase; // Henter inn globalt Stopperstederobjekt
/**
* Run-time constructor, ifm. menyvalg S N.
......@@ -28,116 +28,136 @@ Stoppested::Stoppested(const string nvn) {
}
/**
* Constructor for å lese data dra fil
* Constructor fra fil
* Setter et stoppesteds navn, leser antall naboer
* og legger til eventuelle naboer og deres tid inn i datastrukturen
*
* @param - samme som index for å vite hva som leses inn
* @param nvn Stoppestedets navn (første post)
* @param inn Filen det leses fra
*/
Stoppested::Stoppested(std::string nvn, ifstream & inn) {
Stoppested::Stoppested(const std::string nvn, ifstream & inn) {
int antNaboer,
naboNr,
tidTilN;
navn = nvn;
inn >> antNaboer; inn.ignore();
for (int i = 0; i < antNaboer; i++) {
inn >> naboNr >> tidTilN;
nabostopper.push_back(naboNr);
tidtilnabo.push_back(tidTilN);
navn = nvn; // Setter stoppestedets navn
inn >> antNaboer; inn.ignore(); // Leser et stoppesteds antall naboer
for (int i = 0; i < antNaboer; i++) { // For hver nabo
inn >> naboNr >> tidTilN; // Leser deres unike nummer og tid til
nabostopper.push_back(naboNr); // Nr legges bakerst i vektor
tidtilnabo.push_back(tidTilN); // Tid legges bakerst i vektor
}
if (antNaboer != 0) // Må ha denne, ellers kutter første tegnet i navnet
inn.ignore();
inn.ignore(); // Forkaster enter hvis det finnes naboer
}
/**
* Returnerer et Stoppesteds unike navn
* Sjekker om et Stoppested har en gitt nabo
*
* @return Stoppestedets navn
* @param nr Evt. nabos unike nummer
* @return true Om stoppestedet har denne som nabo
* @return false Om stoppestedet ikke har denne som nabo
*/
string Stoppested::hentStoppestedNavn() {
return navn;
bool Stoppested::finnesNabo(const int nr) {
// Prøver å finne evt. nabo:
auto it = find(nabostopper.begin(), nabostopper.end(), nr);
if (it != nabostopper.end()) { // Hvis nabostoppen finnes i vector:
return true; // Returnerer at nabo er funnet
} // Hvis ingen funn:
return false; // Returnerer at nabo ikke er funnet
}
// TODO: Fyll på her etterhvert som header-fila tar form
/**
* Skriver ut Stoppestedets navn på skjerm ifm. S A
* Henter en nabos faktiske indeks i egen vector
*
* @param nr Naboens unike nummer som skal finnes
* @return int Avstand mellom start på vector og faktisk funn av nabo
* som = deres indeks i vectoren.
* -1 Skal ikke skje, men returner -1 hvis ikke funn
*/
void Stoppested::skrivData() {
cout << setw(20) << navn;
int Stoppested::hentNaboIndeks(const int nr) {
// Går gjennom hele vectoren, forsøker å finne et stoppesteds nummer
auto it = find(nabostopper.begin(), nabostopper.end(), nr);
if (it != nabostopper.end()) { // Funn, returnerer indeks til nummeret:
return distance(nabostopper.begin(), it);
}
return -1; // Skal ikke skje
}
/**
* skrivTilFil(...)
* Henter tid mellom eget stoppested og en nabo
*
* @param nr - Naboens indeks i egen datastruktur
* @return Faktiske tid mellom eget stoppested og nabo
*/
void Stoppested::skrivTilFil(ofstream & ut) {
ut << navn << '\n';
ut << nabostopper.size() << '\n';
for (int i = 0; i < nabostopper.size(); i++) {
ut << nabostopper[i] << ' ';
ut << tidtilnabo[i] << '\n';
}
int Stoppested::hentNaboTid(const int nr) {
return tidtilnabo[nr];
}
/**
* skrivNaboerOgTid()
* Returnerer et Stoppesteds unike navn
*
* @return Stoppestedets navn
*/
void Stoppested::skrivNaboerOgTid() {
string nvn;
if (nabostopper.size() > 0) {
for (int i = 0; i < nabostopper.size(); i++) {
cout << setw(25)
<< gStoppestederBase.hentNavnVhaIndeks(nabostopper[i])
<< " (" << setw(3) << tidtilnabo[i]
<< " min mellom)\n";
}
} else
cout << "Dette stoppestedet har ingen nabostopp.\n\n";
string Stoppested::hentStoppestedNavn() {
return navn;
}
/**
* finnesNabo(...)
* Setter et nabostoppestedets unike nr inn i egen vector
*
* @param nr Naboens indeks
*/
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;
void Stoppested::settNaboIndeks(const int nr) {
nabostopper.push_back(nr+1); // +1 her for faktiske stoppestedNr
}
/**
* settNaboIndeks(...)
* Setter tid mellom et stoppested og en nabo i egen vector
*
* @param nr Tid mellom et stoppested og en nabo
*/
void Stoppested::settNaboIndeks(const int nr) {
nabostopper.push_back(nr+1);
void Stoppested::settNaboTid(const int nr) {
tidtilnabo.push_back(nr); // Legges bakerst i egen vector
}
/**
* settNaboTid(...)
* Skriver ut Stoppestedets navn på skjerm ifm. S A
* Formaterer utskrift til å skrive navn på 20 "plasser"
*/
void Stoppested::settNaboTid(const int nr) {
tidtilnabo.push_back(nr);
void Stoppested::skrivData() {
cout << setw(20) << navn;
}
/**
* hentNaboIndeks(...)
* Skriver ut et stoppesteds naboer og tid til nabostoppestedene
*
* @see Stoppesteder::hentNavnVhaIndeks(...)
*/
int Stoppested::hentNaboIndeks(const int nr) {
auto it = find(nabostopper.begin(), nabostopper.end(), nr);
if (it != nabostopper.end()) {
return distance(nabostopper.begin(), it);
void Stoppested::skrivNaboerOgTid() {
if (nabostopper.size() > 0) { // Hvis stoppestedet har naboer:
for (int i = 0; i < nabostopper.size(); i++) { // For hver nabo:
cout << setw(25) // Skriver ut naboens navn
<< gStoppestederBase.hentNavnVhaIndeks(nabostopper[i])
<< " (" << setw(3) << tidtilnabo[i]
<< " min mellom)\n"; // Skriver ut tid mellom nabo og stopp
}
return -1;
} else // Hvis stoppestedet ikke har naboer:
cout << "Dette stoppestedet har ingen nabostopp.\n\n";
}
/**
* hentNaboTid(...)
* Skriver et stoppesteds datastruktur til fil
*
* @param ut Filen det skrives til
*/
int Stoppested::hentNaboTid(const int nr) {
return tidtilnabo[nr];
void Stoppested::skrivTilFil(ofstream & ut) {
ut << navn << '\n'; // Skriver ut navn og antall naboer:
ut << nabostopper.size() << '\n';
for (int i = 0; i < nabostopper.size(); i++) { // For hver nabo:
ut << nabostopper[i] << ' '; // Skriver deres unike nr
ut << tidtilnabo[i] << '\n'; // og tid mellom
}
}
\ No newline at end of file
/*void Stoppested::alleNaboer(const int nr){
for(int i=0; i < nabostopper.size(); i++)
}*/
......@@ -22,20 +22,17 @@ class Stoppested {
std::vector <int> tidtilnabo;
public:
Stoppested();
Stoppested(std::string nvn, std::ifstream & inn);
Stoppested(const std::string nvn);
Stoppested(const std::string nvn, std::ifstream & inn);
bool finnesNabo(const int nr);
int hentNaboIndeks(const int nr);
int hentNaboTid(const int nr);
std::string hentStoppestedNavn();
void settNaboIndeks(const int nr);
void settNaboTid(const int nr);
void skrivData();
void lesData();
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);
void alleNaboer(const int nr);
};
#endif
\ No newline at end of file
......@@ -9,7 +9,7 @@
#include <string>
#include <vector>
#include <fstream>
#include <algorithm>
#include <algorithm> // transform
#include "LesData3.h"
#include "stoppested.h"
#include "stoppesteder.h"
......@@ -173,10 +173,6 @@ Stoppested* Stoppesteder::finnDuplikat(string nvn) {
// fant ingen duplikater
}
/**
* Funksjon som håndterer brukervalg ifm. Stoppestedermenyen
*
......@@ -200,10 +196,6 @@ void Stoppesteder::handling() {
}
}
/**
* Leser inn data om stoppesteder fra fil
*
......
0% Loading or .
You are about to add 0 people to the discussion. Proceed with caution.
Please register or to comment