CB100

Notas, resueltos y tps de la materia Algoritmos y Estructuras de Datos
Index Commits Files Refs README
commit cec8a628bf30c958f05d503632852979cfeb8a73
parent 4adb08e6f7eda7233a4780c6a643cb23be998523
Author: Martin Klöckner <mjkloeckner@gmail.com>
Date:   Mon, 17 Jun 2024 22:34:05 -0300

parse all fields of input file

Diffstat:
Mmain.cpp | 97+++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++------
1 file changed, 90 insertions(+), 7 deletions(-)
diff --git a/main.cpp b/main.cpp
@@ -2,11 +2,36 @@
 #include <fstream>
 #include <string>
 #include <sstream>
+#include <cstdlib>
 
 #include "list.h"
+#include "barrio.h"
+#include "parada.h"
 
 #define INPUT_FILE_DELIM ','
 
+enum {
+    CALLE,
+    ALT_PLANO,
+    DIRECCION,
+    COORD_X,
+    COORD_Y,
+    COMUNA,
+    BARRIO,
+    LINEA_1,
+    LINEA_1_SENTIDO,
+    LINEA_2,
+    LINEA_2_SENTIDO,
+    LINEA_3,
+    LINEA_3_SENTIDO,
+    LINEA_4,
+    LINEA_4_SENTIDO,
+    LINEA_5,
+    LINEA_5_SENTIDO,
+    LINEA_6,
+    LINEA_6_SENTIDO
+};
+
 int main (void) {
     std::ifstream inputFile;
     std::string line;
@@ -22,27 +47,85 @@ int main (void) {
         return 1;
     }
 
+    int comuna, alturaPlano;
+    double coordX, coordY;
+    std::string barrioName, calle, direccion;
+
     std::getline(inputFile, line); // saltea la primer linea
     while(std::getline(inputFile, line)) {
         lineStream.str(line);
+
+        size_t field = CALLE;
         while(std::getline(lineStream, token, INPUT_FILE_DELIM)) {
+            // verifico que si `token` es una cadena y contiene INPUT_FILE_DELIM
             while((token[0] == '"') && (token[token.size() - 1] != '"')) {
                 std::string nextToken;
                 std::getline(lineStream, nextToken, INPUT_FILE_DELIM);
                 token += INPUT_FILE_DELIM + nextToken;
             }
-            tokens.insert(token);
+
+            switch(field) {
+                case CALLE:
+                    calle = token;
+                    break;
+                case ALT_PLANO:
+                    token.erase(0, 1);
+                    token[token.size() - 1] = '\0';
+                    alturaPlano = std::atoi(token.c_str());
+                    break;
+                case DIRECCION:
+                    direccion = token;
+                    break;
+                case COORD_X:
+                    break;
+                case COORD_Y:
+                    break;
+                case COMUNA:
+                    token.erase(0, 1);
+                    token[token.size() - 1] = '\0';
+                    comuna = std::atoi(token.c_str());
+                    break;
+                case BARRIO:
+                    barrioName = token;
+                    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:
+                    break;
+                case LINEA_6_SENTIDO:
+                    break;
+                default:
+                    break;
+            }
+            field++;
         }
+        std::cout << "{\n  barrio: " << barrioName << ",\n"
+            << "  calle: \"" << calle << "\",\n"
+            << "  comuna: " << comuna << ",\n"
+            << "  direccion: \"" << direccion << "\",\n"
+            << "  alturaPlano: " << alturaPlano << "\n}\n";
         lineStream.clear();
     }
 
     inputFile.close();
 
-    tokens.startCursor();
-    while(tokens.forwardCursor()) {
-        token = tokens.getCursorData();
-        std::cout << ((token == "") ? "" : token.append("\n"));
-    }
-
     return 0;
 }