CB100

Notas, resueltos y tps de la materia Algoritmos y Estructuras de Datos
Index Commits Files Refs README
commit f669fad66ef5b79dfe34c61a194ecde8afc1803e
parent 4dcf077aacb944bad4aa61ae78079d1bffbee7b4
Author: Martin Kloeckner <mjkloeckner@gmail.com>
Date:   Fri, 21 Jun 2024 16:14:08 -0300

add `lineas` to `Parada` constructor

Diffstat:
Mbarrio.cpp | 4++--
Mbarrio.h | 2+-
Mmain.cpp | 31+++++++++++++++----------------
Mparada.cpp | 4++--
Mparada.h | 2+-
5 files changed, 21 insertions(+), 22 deletions(-)
diff --git a/barrio.cpp b/barrio.cpp
@@ -26,9 +26,9 @@ List<Parada*> *Barrio::getParadas() {
 void Barrio::addParada(std::string calle,
         int alturaPlano,
         std::string direccion,
-        double coordX, double coordY) {
+        double coordX, double coordY, std::vector<int> lineas) {
 
-    this->paradas->insert(new Parada(calle, alturaPlano, direccion, coordX, coordY));
+    this->paradas->insert(new Parada(calle, alturaPlano, direccion, coordX, coordY, lineas));
 }
 
 int Barrio::getSizeListaDeParadas() {  // CONSIGNA 1
diff --git a/barrio.h b/barrio.h
@@ -59,7 +59,7 @@ public:
      * pos: agrega una para nueva
      */
     void addParada(std::string calle, int alturaPlano, std::string direccion,
-            double coordX, double coordY);
+            double coordX, double coordY, std::vector<int> lineas);
 
     /*
      * pos: devuelve el numero total de paradas que hay en el barrio
diff --git a/main.cpp b/main.cpp
@@ -88,6 +88,7 @@ int main (void) {
     int comuna, alturaPlano, fields;
     double coordX, coordY;
     std::string barrioNombre, calle, direccion;
+    std::vector<int> lineasEnParada;
 
     const char *inputFilePath = "paradas-de-colectivo.csv";
 
@@ -105,6 +106,7 @@ int main (void) {
 
     while(std::getline(inputFile, line)) {
         tokens.clear();
+        lineasEnParada.clear();
         fields = getTokens(line, tokens);
         for(int field = CALLE; field <= fields; ++field) {
             token = tokens[field];
@@ -136,27 +138,23 @@ int main (void) {
                     }
                     break;
                 case LINEA_1:
-                    break;
-                case LINEA_1_SENTIDO:
-                    break;
                 case LINEA_2:
-                    break;
-                case LINEA_2_SENTIDO:
-                    break;
                 case LINEA_3:
-                    break;
-                case LINEA_3_SENTIDO:
-                    break;
                 case LINEA_4:
-                    break;
-                case LINEA_4_SENTIDO:
-                    break;
                 case LINEA_5:
-                    break;
-                case LINEA_5_SENTIDO:
-                    break;
                 case LINEA_6:
+                    if(token == "") {
+                        break;
+                    }
+                    int linea;
+                    linea = std::atoi(token.c_str());
+                    lineasEnParada.push_back(linea);
                     break;
+                case LINEA_1_SENTIDO:
+                case LINEA_2_SENTIDO:
+                case LINEA_3_SENTIDO:
+                case LINEA_4_SENTIDO:
+                case LINEA_5_SENTIDO:
                 case LINEA_6_SENTIDO:
                     break;
                 default:
@@ -168,10 +166,11 @@ int main (void) {
         if(barrio == NULL) {
             std::cout << "Creando nuevo barrio `" << barrioNombre << "`\n";
             barrio = new Barrio(barrioNombre, comuna);
+            barrio->addParada(calle, alturaPlano, direccion, coordX, coordY, lineasEnParada);
             barrios->insert(barrio);
         } else {
             // barrio ya existe
-            barrio->addParada(calle, alturaPlano, direccion, coordX, coordY);
+            barrio->addParada(calle, alturaPlano, direccion, coordX, coordY, lineasEnParada);
         }
     }
 
diff --git a/parada.cpp b/parada.cpp
@@ -3,14 +3,14 @@
 Parada::Parada(std::string calle,
         int alturaPlano,
         std::string direccion,
-        double coordX, double coordY) {
+        double coordX, double coordY, std::vector<int> lineas) {
 
     this->alturaPlano = alturaPlano;
     this->calle = calle;
     this->coordX = coordX;
     this->coordY = coordY;
     this->direccion = direccion;
-    this->lineas = new std::vector<int>();
+    this->lineas = new std::vector<int>(lineas);
 }
 
 std::string Parada::getCalle() {
diff --git a/parada.h b/parada.h
@@ -21,7 +21,7 @@ public:
     Parada(std::string calle,
             int alturaPlano,
             std::string direccion,
-            double coordX, double coordY);
+            double coordX, double coordY, std::vector<int> lineas);
 
     /*
      * post: Devuelve el numero de la calle