From a6aa17d07f238046c7196b0388e1bf9a8fb691d5 Mon Sep 17 00:00:00 2001
From: andrbl <andrbl@stud.ntnu.no>
Date: Thu, 7 Apr 2022 17:29:38 +0200
Subject: [PATCH] Fikset bug i tabell() funk i rute.cpp.

---
 rute.cpp | 101 ++++++++++++++++++++++++++++++++++++++++++++-----------
 1 file changed, 82 insertions(+), 19 deletions(-)

diff --git a/rute.cpp b/rute.cpp
index 439b9fb..0b2538e 100644
--- a/rute.cpp
+++ b/rute.cpp
@@ -149,7 +149,7 @@ void Rute::skrivDataBaklengs() {
     bool forste = true;
 
     totalTid = 0;
-    cout << "\n\n..::Stoppested navn\tTid mellom stopp"
+    cout << "\n\n\t..::Stoppested navn\tTid mellom stopp"
          << "\tTotal tid fra rutestart::..";
 
     for (auto it = alleStoppestedenePaaRuten.rbegin();
@@ -421,18 +421,14 @@ void Rute::tabell() {
                          tilKlTime < tmpTime ||
                          tilKlMin > MAX_MINUTTER || tilKlMin < 0);
 
-                /*if (fraKlTime == 0 && fraKlMin == 0 ||
-                    tilKlTime == 0 && tilKlMin == 0)
-                    cout << "\nAvbryter" << '\n';*/
-
                 // Legger til tider i vector
                 if (ikkeFullt) {
-                    valgtTid.push_back({fraKlTime, tmpTime, tmpMin, avgangsTid,
-                                        tilKlTime, tilKlMin});
+                    valgtTid.push_back({fraKlTime, fraKlMin, tmpTime,
+                                        tmpMin, avgangsTid,
+                                        tilKlTime, tilKlMin, tmpTime});
                 }
             } else {
                 fraKlTime = fraKlMin = tilKlTime = tilKlMin = 0;
-                // cout << "\nAvbryter" << '\n';
             }
 
         } while (fraKlTime > 0 || fraKlMin > 0 || tilKlTime > 0 || tilKlMin > 0);  // fraKlTime != 0 || fraKlMin != 0 && tilKlTime != 0 || tilKlMin != 0 && ikkeFullt);
@@ -449,26 +445,93 @@ void Rute::tabell() {
                  << "\n\n";
             // Klokkeslett
             for (int i = valgtTid.front()[0];
-                 i <= valgtTid.back()[4]; i++) {
+                 i <= valgtTid.back()[5]; i++) {
                 if (i <= 9)
                     cout << "\t\t0" << i;
                 else
                     cout << "\t\t" << i;
                 cout << ":";
+
                 // Tabell for stopp på 'i' klokkeslett
-                for (const auto& val : valgtTid) {
-                    if (i >= val[0] && i <= val[4]) {
+                int tall = 0;
+                int pos = 0;
+                int timeAvgang = 0;
+                int minutterAvgang = 0;
+                for (auto& val : valgtTid) {
+                    if (i >= val[0] && i <= val[5]) {
+                        igjen = true;
+                        timeAvgang = (val[4] + totTid) / 60;
+                        minutterAvgang = (val[4] + totTid) % 60;
+                        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)
+                            tall = minutterAvgang;
+                        else
+                            tall = totTid + val[4];
+
+                        
+                        while (igjen) {
+                            if (i >= val[2]) {
+                                // cout << timeAvgang << "\n\n";
+                                if (tall < MAX_MINUTTER && val[7] == i) {
+                                    cout << "\t";
+                                    if (tall <= 9)
+                                        cout << "0" << tall;
+                                    else
+                                        cout << tall;
+                                    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 tall = totTid + val[2];
+
+                        /*int antTimer;
+                        if (tall > MAX_MINUTTER) {
+                            antTimer = tall / 60;
+                        }else antTimer = 0;
+
                         igjen = true;
                         while (igjen) {
-                            if (tall < MAX_MINUTTER) {
+                            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;
@@ -530,14 +593,14 @@ void Rute::lesFraFil(ifstream& inn) {
         linjenSplittet = hjelp.splittStreng('*', heleLinjen);
         pos = 0;
         if (heleLinjen != "Buss" && heleLinjen != "Bane" && heleLinjen != "X") {
-            for (int i = 0; i < linjenSplittet.size() -1; i++) {
+            for (int i = 0; i < linjenSplittet.size() - 1; i++) {
                 // if (!hjelp.erBokstav(val)) {
                 switch (i) {
-                    case 0:{
+                    case 0: {
                         stopp = new Stopp;
                         stopp->indexStoppested = stoi(linjenSplittet[0]);
                         break;
-                        }
+                    }
                     case 1: {
                         stopp->minutterFraForrigeStoppested = stoi(linjenSplittet[1]);
                         alleStoppestedenePaaRuten.push_back(stopp);
@@ -547,11 +610,11 @@ void Rute::lesFraFil(ifstream& inn) {
                 // }
                 cout << stopp->indexStoppested << '\n'
                      << stopp->minutterFraForrigeStoppested << '\n';
-                
+
                 cout << alleStoppestedenePaaRuten.size() << " size \n\n";
                 pos++;
             }
-            //alleStoppestedenePaaRuten.push_back(stopp);
+            // alleStoppestedenePaaRuten.push_back(stopp);
         }
     } while (heleLinjen != "Buss" && heleLinjen != "Bane" && heleLinjen != "X");
 }
-- 
GitLab