From d42b72c931c638e07bb71f5d8a886976806dd0b4 Mon Sep 17 00:00:00 2001 From: fsimonsen <fredersi@stud.ntnu.no> Date: Sun, 3 Apr 2022 18:15:00 +0200 Subject: [PATCH] mulig fiks av issues R T --- rute.cpp | 77 ++++++++++++++++++++++++++++++++++++++------------------ 1 file changed, 52 insertions(+), 25 deletions(-) diff --git a/rute.cpp b/rute.cpp index 3742fc3..fdebaaf 100644 --- a/rute.cpp +++ b/rute.cpp @@ -187,7 +187,7 @@ void Rute::ruteTabell(const int diff, const string start, const string stSted) { tPrint, // hjelpevariabel for å sørge for korrekt utskrift av time antGanger, // omregning for å legge inn riktig antall avgangstider startTid, // omregning for å legge inn starttid - n, // hjelpevariabel for linjeskift ved ny time + n = -1, // hjelpevariabel for linjeskift ved ny time timer, // hjelpevariabel for å skrive ut time minutter, // hjelpevariabel for å skrive ut minutter avgangsTid, // omregning for å legge inn riktig avgangstid @@ -197,22 +197,35 @@ void Rute::ruteTabell(const int diff, const string start, const string stSted) { cout << "\nRuteavganger fra startstedet (" << start << ") - " << "avslutt med 0 0):\n\n"; - cout << "Fra kl. (00:01 - 23:59): "; + cout << "Fra kl. (00:01 - 23:53): "; cin >> startT >> startM; cin.ignore(); // Leser starttid + startTid = (startT*60)+startM; // Regner ut første avgangstid - - while (!gyldigTid(startT, startM)) { // Sørger for at starttid er gyldig + while (!gyldigTid(startT, startM) || startTid > 1433) { // Sørger for at starttid er gyldig cout << "\nUlovlig klokkeslett. Prøv igjen (tt mm): "; cin >> startT >> startM; cin.ignore(); + startTid = (startT*60)+startM; } - startTid = (startT*60)+startM; // Regner ut første avgangstid - n = startT; // Setter indikator til å være første starttime + avgangsTid = startTid+diff; + //n = avgangsTid/60; + while (startT != 0 || startM != 0) { // Så lenge bruker ikke taster 0 0 - avgangstider.push_back(startTid+diff); // Legger start tid i vector + avgangsTid = startTid+diff; // mulig denne kan fjernes + if (avgangsTid < 1440) { + avgangstider.push_back(avgangsTid); // Legger start tid i vector + } else { + avgangstider.push_back(avgangsTid%1440); + } + + // Leser tid mellom avganger - tidMellom = lesInt("Tid mellom avganger", MINTID, MAXTID); + if (avgangsTid < 1319) { + tidMellom = lesInt("Tid mellom avganger", MINTID, MAXTID); + } else { + tidMellom = lesInt("Tid mellom avganger", MINTID, 1439%startTid); + } startTotal = (startT*60)+startM+tidMellom; // Omregner for sjekk tPrint = startTotal/60; // Regner ut gyldig utskrift: mPrint = startTotal%60; @@ -230,34 +243,43 @@ void Rute::ruteTabell(const int diff, const string start, const string stSted) { sluttTotal = (sluttT*60)+sluttM; // Omregner for sjekk } - antGanger = ((sluttT-startT)*60)/tidMellom; // Omregning for loop + antGanger = (((sluttT-startT)*60)+sluttM-startM)/tidMellom; // Omregning for loop avgangsTid = startTid+diff; // Setter på differanse en gang for (int i = 0; i < antGanger; i++) { // Legger til riktig antall avgangstider: avgangsTid = avgangsTid + tidMellom; // Omregning - avgangstider.push_back(avgangsTid); // Legges i vektor + if (avgangsTid < 1440) { + avgangstider.push_back(avgangsTid); + } else { + avgangstider.push_back(avgangsTid%1440); // Legges i vektor + } } tPrint = (sluttTotal+1)/60; // Regner ut gyldig utskrift: mPrint = (sluttTotal+1)%60; - - cout << "\n\nFra kl. (" << ((tPrint < 10) ? "0" : "") << tPrint - << ':' << ((mPrint < 10) ? "0" : "") << mPrint - << " - 23:59): "; - cin >> startT >> startM; cin.ignore(); // Leser ny starttid - startTotal = (startT*60)+startM; // Omregning - // Sørger for ny lovlig starttid: - while ((!gyldigTid(startT, startM) || startTotal <= sluttTotal) - && (startT != 0 || startM != 0)) { // Sørger for at starttid er gyldig - cout << "\nUlovlig klokkeslett. Prøv igjen (tt mm): "; - cin >> startT >> startM; cin.ignore(); + if (sluttTotal < 1433) { + cout << "\n\nFra kl. (" << ((tPrint < 10) ? "0" : "") << tPrint + << ':' << ((mPrint < 10) ? "0" : "") << mPrint + << " - 23:53): "; + cin >> startT >> startM; cin.ignore(); // Leser ny starttid startTotal = (startT*60)+startM; // Omregning + // Sørger for ny lovlig starttid: + while ((!gyldigTid(startT, startM) || startTotal <= sluttTotal) + && (startT != 0 || startM != 0)) { // Sørger for at starttid er gyldig + cout << "\nUlovlig klokkeslett. Prøv igjen (tt mm): "; + cin >> startT >> startM; cin.ignore(); + startTotal = (startT*60)+startM; // Omregning + } + startTid = (startT*60)+startM; // Omregning + } else { + startT = 0; startM = 0; } - startTid = (startT*60)+startM; // Omregning + } - cout << "\n\nRutetabell for stoppested: " << stSted << "\n\n" - << ((n < 10) ? "0" : "") << n << ':'; + cout << "\n\nRutetabell for stoppested: " << stSted << "\n\n"; + //<< ((n < 10) ? "0" : "") << n << ':'; + sort(avgangstider.begin(), avgangstider.end()); for (int i = 0; i < avgangstider.size(); i++) { // For hver avgangstid: timer = avgangstider[i]/60; // Regner ut time @@ -265,9 +287,14 @@ void Rute::ruteTabell(const int diff, const string start, const string stSted) { if (timer == n) { // Skriver ut minutter hvis time er lik indikator cout << ' ' << ((minutter < 10) ? "0" : "") << minutter; } else { // Skriver ut time hvis timer er mer enn indikator - cout << '\n' << ((timer < 10) ? "0" : "") + if (timer < 24) { + cout << '\n' << ((timer < 10) ? "0" : "") << timer << ':' << ' ' << ((minutter < 10) ? "0" : "") << minutter; + } else { + cout << '\n' << ((timer%24 < 10) ? "0" : "") << timer%24 << ": " << ((minutter < 10) ? "0" : "") + << minutter; + } n = timer; // Oppdaterer indikator } } -- GitLab