From e2832888a2c11959e458eb7da9f8fc7ba9a45739 Mon Sep 17 00:00:00 2001 From: andrbl <andrbl@stud.ntnu.no> Date: Thu, 7 Apr 2022 18:28:04 +0200 Subject: [PATCH] =?UTF-8?q?Fjernet=20ubrukt=20kode=20og=20la=20til=20doxyg?= =?UTF-8?q?en=20kommentarer=20p=C3=A5=20alle=20funksjonene=20i=20rute.cpp.?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- rute.cpp | 248 +++++++++++++++++++++++++++++++++---------------------- 1 file changed, 149 insertions(+), 99 deletions(-) diff --git a/rute.cpp b/rute.cpp index 0b2538e..43c5bd1 100644 --- a/rute.cpp +++ b/rute.cpp @@ -4,11 +4,27 @@ using namespace std; extern Stoppesteder* gStoppesteder; +/** + * Constructor for Rute objekt. + * + */ Rute::Rute() { } +/** + * Destructor for Rute objektet. + * + */ Rute::~Rute() { } + +/** + * Lager ett nytt stopp i ruten. + * + * @param eksisterende - Indexen til ett eksisterende stoppested. + * @param pos - Posisjonen til iteratoren. + * @return Stopp* - Ett nytt stopp hvis alt stoppet er lovlig nullptr ellers. + */ Stopp* Rute::ny(const int& eksisterende, int pos) { string stoppPlass = ""; Stoppested *stoppested, *forrigeStoppested; @@ -61,7 +77,7 @@ Stopp* Rute::ny(const int& eksisterende, int pos) { } else if (forsteStopp) stopp->minutterFraForrigeStoppested = 0; else { - stopp->minutterFraForrigeStoppested = -1; // stoppested->hentTidNaboStopp(); + stopp->minutterFraForrigeStoppested = -1; } if (!sjekkOmStoppEksisterer(stopp)) { oppdaterStoppestedVectorer(stoppested, @@ -73,21 +89,15 @@ Stopp* Rute::ny(const int& eksisterende, int pos) { } else if (eksisterende != -1) { auto it = alleStoppestedenePaaRuten.begin(); advance(it, pos); - Stopp* tmpstopp = *it; int tmpTid = tmpstopp->minutterFraForrigeStoppested; tmpstopp->minutterFraForrigeStoppested = stopp->minutterFraForrigeStoppested; stopp->minutterFraForrigeStoppested = tmpTid; - // slettStoppested(pos, pos); - alleStoppestedenePaaRuten.insert(it, stopp); - pos++; - } else alleStoppestedenePaaRuten.push_back(stopp); cout << "\nStopp lagt til!" << '\n'; - // return stopp; } else cout << "\nError: Stopp er allerede lagt til!" << '\n'; } @@ -101,12 +111,25 @@ Stopp* Rute::ny(const int& eksisterende, int pos) { return stopp; } +/** + * Sletter alle pekerne i listen over alle stoppestedene i ruten. + * + */ void Rute::ryddOppMinne() { for (const auto& val : alleStoppestedenePaaRuten) { delete val; } alleStoppestedenePaaRuten.clear(); } + +/** + * Sjekker om et stopp eksiterer fra før i listen over alle + * stoppestedene i ruten. + * + * @param stopp - Peker til stoppet. + * @return true - Hvis stoppet eksisterer i ruten. + * @return false - Hvis stoppet ikke eksisterer i ruten. + */ bool Rute::sjekkOmStoppEksisterer(Stopp* stopp) { for (const auto& val : alleStoppestedenePaaRuten) { if (val->indexStoppested == stopp->indexStoppested) return true; @@ -114,11 +137,24 @@ bool Rute::sjekkOmStoppEksisterer(Stopp* stopp) { return false; } +/** + * Skriver ut informasjon om ruten forlengs og baklengs. + * + * @see skrivDataForlengs(). + * @see skrivDataBaklengs(). + */ void Rute::skrivData() { skrivDataForlengs(); skrivDataBaklengs(); } +/** + * Skriver ut informasjon om ruten forlengs. Fra startstopp til + * endestopp til terminal. + * + * @see Stoppested::hentEksisterende(). + * @see Stoppested::hentNavn(). + */ void Rute::skrivDataForlengs() { Stoppested* stopp; int totalTid, storrelseListe; @@ -142,6 +178,13 @@ void Rute::skrivDataForlengs() { } } +/** + * Skriver ut informasjon om ruten baklengs, dvs + * fra endestopp til startstopp til terminal. + * + * @see Stoppested::hentEksisterende(). + * @see Stoppested::hentNavn(). + */ void Rute::skrivDataBaklengs() { Stoppested* stoppested; Stopp *stopp, *forrigeStopp; @@ -179,6 +222,14 @@ void Rute::skrivDataBaklengs() { } } +/** + * Funksjonen styrer om stopp skal slettes eller endres + * i en eksisterende rute. + * + * @see lesData3 lesInt(). + * @see slettStoppested(). + * @see smettInnStoppested(). + */ void Rute::endre() { int valg, antall; cout << "\n\n1 - Slett stoppested\n2 - Smett inn stoppested\n0 - Avbryt" << '\n'; @@ -189,7 +240,7 @@ void Rute::endre() { start = slutt = 0; start = lesInt("Hvilke stoppested utgjør start punktet?", 1, antall); - // if (start + 1 >= alleStoppestedenePaaRuten.size()) + if (valg == 1 && antall > 2 && start < antall) { slutt = lesInt("Hvilket stoppested utgjør slutt ytterpunkt?", start + 2, antall); @@ -203,17 +254,21 @@ void Rute::endre() { if (valg == 2 && slutt - 1 == start || valg == 2 && slutt == start) smettInnStoppested(start, slutt); - /*else if (valg == 1 && start == slutt - 1 || slutt == 0) - cout << "\nError i sletting: ugyldig input!" << '\n';*/ else if (valg == 2) cout << "\nError: For smett inn så må slutt være rett etter start " << "for at innsmettingen skal være entydig!\n"; //" << '\n' } } +/** + * Sletter ett eller flere stopp fra ruten mellom + * de angitte parameterne. + * + * @param start - Slett fra. + * @param slutt - Slett til. + */ void Rute::slettStoppested(const int& start, const int& slutt) { Stopp* stopp; - cout << "\nlist size: " << alleStoppestedenePaaRuten.size() << "\n\n"; auto it = alleStoppestedenePaaRuten.begin(); advance(it, start); for (int i = start; i < slutt - 1; i++) { @@ -224,6 +279,15 @@ void Rute::slettStoppested(const int& start, const int& slutt) { skrivData(); } +/** + * Smetter inn et stoppested mellom angitte parameter + * verdier. + * + * @param start - Fra stopp. + * @param slutt - Til stopp. + * + * @see ny(). + */ void Rute::smettInnStoppested(const int& start, const int& slutt) { Stopp* stopp; list<Stopp*>::iterator it = alleStoppestedenePaaRuten.begin(); @@ -235,6 +299,11 @@ void Rute::smettInnStoppested(const int& start, const int& slutt) { ny(stopp->indexStoppested, start); } +/** + * Legger til ett stopp i ruten hvis det ikke er nullptr. + * + * @param stopp - Peker til stopp. + */ void Rute::leggTilStoppestedIRute(Stopp* stopp) { if (stopp != nullptr) alleStoppestedenePaaRuten.push_back(stopp); @@ -243,6 +312,22 @@ void Rute::leggTilStoppestedIRute(Stopp* stopp) { void Rute::skrivType() { } +/** + * Oppdaterer stoppestedet og stoppestedets naboer sine indexer til naboer + * og minutter mellom de relaterte nabo stoppene. + * + * @param stoppested - Peker til nåværende stoppested. + * @param forrigeStoppested - Peker til det forrige stoppestedet. + * @param stopp - Peker til det nåværende stoppet. + * @param forrigeStopp - Peker til det forrige stoppet. + * + * @see Stoppested::hentAntallStoppestedVector(). + * @see Stoppested::hentTidNaboStopp(). + * @see Stoppested::hentTidForsteNabo(). + * @see Stoppested::leggTilNaboBakerst(). + * @see Stoppested::leggTilNaboFremst(). + * @see Stoppested::leggTilNaboStopp(). + */ void Rute::oppdaterStoppestedVectorer(Stoppested* stoppested, Stoppested* forrigeStoppested, Stopp* stopp, @@ -251,30 +336,16 @@ void Rute::oppdaterStoppestedVectorer(Stoppested* stoppested, tmpTid2 = tmpTid = -1; int antIVec = stoppested->hentAntallStoppestedVector(); Stoppested* tmpstd = stoppested; - // gStoppesteder->hentEksisterende(stoppested->hentNaboStoppIndex(true)); - // Stoppested* tmpstd2 = gStoppesteder->hentEksisterende(stoppested->hentNaboStoppIndex(true)); if (stoppested != nullptr) { tmpTid = stoppested->hentTidNaboStopp(); - // tmpTid2 = tmpstd2->hentTidNaboStopp(); } - if (forrigeStoppested != nullptr) { if (stopp->minutterFraForrigeStoppested == -1) { - /* for (const auto& val : gStoppesteder->alleStoppesteder) { - if (val->hentNaboStoppIndex(true) == stopp->indexStoppested) { - forrigeStoppested->leggTilNaboBakerst(stopp->indexStoppested, - val->hentTidNaboStopp()); - cout << val->hentTidNaboStopp() << "\n\n"; - //break; - } - }*/ tmpTid2 = stoppested->hentTidForsteNabo(); if (tmpTid2 == -1) tmpTid2 = stoppested->hentTidNaboStopp(); // Legger nåværende stopp til i forrige stoppested forrigeStoppested->leggTilNaboBakerst(stopp->indexStoppested, tmpTid2); - cout << "\n\n||" << tmpTid2 << " : " - << stopp->indexStoppested << "\n\n"; } else forrigeStoppested->leggTilNaboBakerst(stopp->indexStoppested, @@ -285,18 +356,9 @@ void Rute::oppdaterStoppestedVectorer(Stoppested* stoppested, // Legger til nåværende stopp til stoppested stoppested->leggTilNaboFremst(forrigeStopp->indexStoppested, tmpTid2); - cout << "\n\n--" << tmpTid2 - << " : " << forrigeStopp->indexStoppested << "\n\n"; } else stoppested->leggTilNaboFremst(forrigeStopp->indexStoppested, stopp->minutterFraForrigeStoppested); - - /*if (forrigeStopp->minutterFraForrigeStoppested > 0) - stoppested->leggTilNaboFremst(forrigeStopp->indexStoppested, - forrigeStopp->minutterFraForrigeStoppested); - else - stoppested->leggTilNaboFremst(forrigeStopp->indexStoppested, - stopp->minutterFraForrigeStoppested);*/ } } else if (antIVec < 1) { stoppested->leggTilNaboStopp(-1, -1); @@ -304,16 +366,37 @@ void Rute::oppdaterStoppestedVectorer(Stoppested* stoppested, // Gir stopp nabo-tid slik at rute beskrivelse fungerer korrekt if (stopp->minutterFraForrigeStoppested == -1) stopp->minutterFraForrigeStoppested = stoppested->hentTidNaboStopp(); - - // stopp->minutterFraForrigeStoppested = tmpTid; } +/** + * Leser inn tid fra CLI. + * + * @return int - Brukervalgte tid. + * @see LesData3 lesInt(). + */ int Rute::lesTid() { return lesInt("Tid mellom forrige stopp i minutter", MIN_MINUTTER, MAX_MINUTTER); } +/** + * Styrer alt som har med tabell logikk å gjøre dvs. + * Den skriver ut en tabell for et spesefikt stoppested + * i en spesefikk rute mellom bruker valgte tidspunkt + * enten framlengs eller baklengs. + * + * @see Stoppesteder::hentEksisterende(). + * @see Stoppested::hentNavn(). + * @see skrivDataForlengs(). + * @see skrivDataBaklengs(). + * @see HjelpeFunksjoner::rensStreng(). + * @see HjelpeFunksjoner::skrivKlokkeslett(). + * @see LesData3 lesInt(). + * @see HjelpeFunksjoner::lesTall(). + * @see hentTotalTidForan(). + * @see hentTotalTidTilbake(). + */ void Rute::tabell() { Retning retning = Annen; Stoppested* stoppested; @@ -454,7 +537,6 @@ void Rute::tabell() { // Tabell for stopp på 'i' klokkeslett int tall = 0; - int pos = 0; int timeAvgang = 0; int minutterAvgang = 0; for (auto& val : valgtTid) { @@ -465,26 +547,14 @@ void Rute::tabell() { if ((val[4] + totTid) % 60 != 0) timeAvgang++; - // val[7] += totTid + val[4]; - /*if (val[7] > 0) - tall = val[7]; - else { - tall = minutterAvgang + totTid; - val[7] = val[4] + totTid;*/ - //} - // Hvis i er - /*if (i + timeAvgang != + val[0]+timeAvgang ) - tall = 60;*/ - // timeAvgang += i; - if (val[7] == i )//&& totTid + val[4] > MAX_MINUTTER) + if (val[7] == i) tall = minutterAvgang; else tall = totTid + val[4]; - while (igjen) { + // På samme time if (i >= val[2]) { - // cout << timeAvgang << "\n\n"; if (tall < MAX_MINUTTER && val[7] == i) { cout << "\t"; if (tall <= 9) @@ -494,52 +564,15 @@ void Rute::tabell() { if (val[4] > MAX_MINUTTER) igjen = false; tall += totTid + val[4]; - + } else { - igjen = false; - } - + } } else - igjen = false; } if (val[7] == i) val[7] += timeAvgang; - // val[7] -= 60; - // if (val[7] < 0) - // val[7] = 0; - - // cout << "inne i if!\n\n"; - // int iEnTime = (60 / (totTid + val[2])); - - /*int antTimer; - if (tall > MAX_MINUTTER) { - antTimer = tall / 60; - }else antTimer = 0; - - igjen = true; - while (igjen) { - if (tall >= val[1] && - i == val[2] && - tall < MAX_MINUTTER) { - // tall -= val[3]; - cout << "\t" << tall; - tall += tall; - } else if (tall < MAX_MINUTTER && i > val[2]) { - cout << "\t" << tall; - tall += tall; - } else - igjen = false; - }*/ - // else cout << "\t" << totTid + val[2]; - - /* utregning = (totTid + val[2]) / 60; - if (utregning < MAX_MINUTTER) - - else if (i == val[4] - 1) { - cout << "\t" << totTid + val[1]; - }*/ } } cout << '\n'; @@ -549,6 +582,12 @@ void Rute::tabell() { cout << "\nError: Fant ikke noe stoppested med det navnet!" << '\n'; } +/** + * Henter total tid fra stoppested start til angitt parameter. + * + * @param pos - Indexen til stoppestedet. + * @return int - Den totale tiden fra start stopp til pos. + */ int Rute::hentTotalTidForan(const int& pos) { int totalTid; totalTid = 0; @@ -561,6 +600,13 @@ int Rute::hentTotalTidForan(const int& pos) { return -1; } +/** + * Henter total tid fra stoppested slutt til angitt parameter. + * Brukes når man trenger total tid "reversert" som i skrivDataBaklengs(). + * + * @param pos - Indexen til stoppestedet. + * @return int - Den totale tiden fra slutt stopp til pos. + */ int Rute::hentTotalTidTilbake(const int& pos) { Stopp *stopp, *forrigeStopp; int totalTid; @@ -581,20 +627,25 @@ int Rute::hentTotalTidTilbake(const int& pos) { return -1; } +/** + * Leser inn stopp fra fil og lager en nye pekere til + * Stopp structs som legges til listen over alle stoppesteder + * på ruten. + * + * @param inn - Inn data fil-strøm. + * @see HjelpeFunksjoner::splittStreng(). + */ void Rute::lesFraFil(ifstream& inn) { Stopp* stopp = nullptr; vector<string> linjenSplittet; int pos = 0; string heleLinjen = ""; - // getline(inn, heleLinjen); - // cout << heleLinjen << "\n\n"; do { getline(inn, heleLinjen); linjenSplittet = hjelp.splittStreng('*', heleLinjen); pos = 0; if (heleLinjen != "Buss" && heleLinjen != "Bane" && heleLinjen != "X") { for (int i = 0; i < linjenSplittet.size() - 1; i++) { - // if (!hjelp.erBokstav(val)) { switch (i) { case 0: { stopp = new Stopp; @@ -607,18 +658,17 @@ void Rute::lesFraFil(ifstream& inn) { break; } } - // } - cout << stopp->indexStoppested << '\n' - << stopp->minutterFraForrigeStoppested << '\n'; - - cout << alleStoppestedenePaaRuten.size() << " size \n\n"; pos++; } - // alleStoppestedenePaaRuten.push_back(stopp); } } while (heleLinjen != "Buss" && heleLinjen != "Bane" && heleLinjen != "X"); } +/** + * Skriver alle stopp på en rute til fil. + * + * @param ut - Ut data fil-strøm. + */ void Rute::skrivTilFil(ofstream& ut) { for (const auto& val : alleStoppestedenePaaRuten) { ut << val->indexStoppested << '*' -- GitLab