Advertisement
davidcastrosalinas

EDD 20200925 Ejemplo básico de procesamiento de archivo

Sep 25th, 2020
205
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
C++ 3.16 KB | None | 0 0
  1. #include <iostream>
  2. #include <fstream>
  3. #include <vector>
  4. #include <sstream>
  5.  
  6. using namespace std;
  7. #define MAX_COMUNAS 36
  8. string nombreComuna[MAX_COMUNAS]={
  9. "VACIO","Cerrillos","Cerro navia","Conchali","El bosque", "Estacion central", "Huechuraba","Independencia","La cisterna",
  10.  "La florida"," La granja","La pintana","La reina", "Las condes","Lo barnechea","Lo espejo", "Lo prado", "Macul",
  11.  " Maipu", "Nunoa","Pedro Aguirre Cerda","Penalolen", "Providencia","Pudahuel", "Puente alto", "Quilicura","Quinta normal",
  12.   "Recoleta","Renca","San bernardo","San joaquin", "San miguel","Santiago","San ramon","Vitacura"};
  13.  
  14. int numeroComunaPorNombre(string valor){
  15.     for(int i=1;i<MAX_COMUNAS;i++)
  16.         if(nombreComuna[i]==valor)
  17.             return i;
  18.  
  19.     return 0;
  20. }
  21.  
  22. string nombreComunaPorNumero(int valor){
  23.     if(valor<MAX_COMUNAS)
  24.         return nombreComuna[valor];
  25.     else
  26.         return "_";
  27.  
  28. }
  29.  
  30. struct DatosComuna{
  31.     string fecha;
  32.     string origen;
  33.     string destino;
  34.     int viajes;
  35. };
  36.  
  37. void procesarArchivo(string nombreArchivo, DatosComuna lista[], int &cantidad ){
  38.     ifstream archivo;
  39.     archivo.open(nombreArchivo.c_str(), ios::in);
  40.  
  41.  
  42.     if(!archivo.is_open()){
  43.         cout << "Error en la apertura del archivo "+nombreArchivo;
  44.     } else {
  45.         string linea;
  46.  
  47.         while (getline(archivo, linea, '\n')){
  48.             vector<string> items;
  49.             stringstream ss(linea);
  50.             string temp;
  51.             while (getline(ss, temp, ','))
  52.                 items.push_back(temp);
  53.             //me saltaré la primera línea
  54.             if(cantidad > 0) {
  55.                 lista[cantidad].fecha = items[0];
  56.                 lista[cantidad].origen = items[1];
  57.                 lista[cantidad].destino = atoi(items[2].c_str());
  58.                 lista[cantidad].viajes = atoi(items[3].c_str());
  59.             }
  60.             cantidad++;
  61.  
  62.         }
  63.     }
  64.     cout <<"se han cargado "<<cantidad<<" registros"<<endl;
  65. }
  66.  
  67. void mostrarVector(DatosComuna lista[], int cantidad ){
  68.     int suma = 0;
  69.     for(int i=0; i<cantidad; i++) {
  70.         suma +=  lista[i].viajes;
  71.         cout << lista[i].fecha<<" ";
  72.         cout << lista[i].origen<<" ";
  73.         cout << lista[i].destino<<" ";
  74.         cout << lista[i].viajes<<" ";
  75.         cout << suma<<" "<<endl;
  76.     }
  77. }
  78.  
  79. //usar como variable global para que soporte una gran cantidad de datos
  80. #define MAX_REGISTRO 100000
  81. DatosComuna lista[MAX_REGISTRO];
  82.  
  83. int main()
  84. {
  85.     //string nombreArchivo = "C:\\Users\\mono\\Desktop\\Calcular listas con n numeros\\ViajesComunas.txt";
  86.     string nombreArchivo = "D:\\TEXTO\\ViajesComunas_std.csv";
  87.     int cantidad = 0;
  88.     //cargamos los datos del archivo a un vector, eso se hace 1 sola vez
  89.     procesarArchivo(nombreArchivo, lista, cantidad);
  90.     //luego para todos los problemas a resolver sólo operamos con el vector.
  91.     mostrarVector(lista, cantidad);
  92.  
  93.     /**
  94.     Para más información
  95.     Código de ejemplo: https://pastebin.com/8v57miv7
  96.  
  97.     Cápsula de contenidos "Cápsula-Ejemplo utilización de vectores con estructuras (creada el semestre 2020-01)"
  98.     https://www.youtube.com/watch?v=4YVVcFahKVg
  99.     **/
  100.  
  101.     return 0;
  102. }
  103.  
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement