Foros del Web » Programación para mayores de 30 ;) » C/C++ »

Lectura de arreglos para manipularlos

Estas en el tema de Lectura de arreglos para manipularlos en el foro de C/C++ en Foros del Web. Hola! Soy nuevo en el foro y quiero agradecer de antemano su apoyo. Soy relativamente nuevo con el C++. Actualmente tengo el problema de leer ...
  #1 (permalink)  
Antiguo 22/07/2015, 14:32
 
Fecha de Ingreso: julio-2015
Ubicación: México D.F.
Mensajes: 5
Antigüedad: 9 años, 4 meses
Puntos: 0
Lectura de arreglos para manipularlos

Hola! Soy nuevo en el foro y quiero agradecer de antemano su apoyo. Soy relativamente nuevo con el C++.
Actualmente tengo el problema de leer un archivo de datos y guardarlo en vectores ó arreglos según sea más conveniente para despúes con ellos elaborar operaciones matemáticas.
Este es un ejemplo del tipo de datos que quiero leer.

{{1, 1, 3, 13312}, {1, 2, 7, 13393}, {1, 3, 5, 18999}}
{{2, 1, 8, 66962}, {2, 2, 6, 12901}, {2, 3, 8, 32862}}
{{3, 1, 7, 41614}, {3, 2, 5, 61455}, {3, 3, 7, 75502}}
{{4, 1, 7, 68611}, {4, 2, 7, 15513}, {4, 3, 3, 31933}}
{{5, 1, 3, 51015}, {5, 2, 8, 27722}, {5, 3, 3, 50555}}
{{6, 1, 2, 21665}, {6, 2, 2, 40999}, {6, 3, 6, 41725}}
{{7, 1, 5, 21500}, {7, 2, 1, 32539}, {7, 3, 2, 20462}}
{{8, 1, 2, 64630}, {8, 2, 6, 52658}, {8, 3, 5, 73321}}

Espero poder contar con su apoyo y claro también contribuir con ustedes.

Gracias!
  #2 (permalink)  
Antiguo 22/07/2015, 14:43
Avatar de xKuZz  
Fecha de Ingreso: febrero-2015
Ubicación: nullptr
Mensajes: 183
Antigüedad: 9 años, 9 meses
Puntos: 27
Respuesta: Lectura de arreglos para manipularlos

Aquí tienes un tutorial dónde se te explica lo fundamental sobre cómo trabajar con archivos en C++:

http://www.programacionenc.net/index...n-cc&Itemid=55

Esperamos verte por aquí a menudo, si te surge una duda concreta tras trabajar con el tutorial estaremos encantados de ayudarte a resolver tus problemas. Para ello debes poner siempre el código que lleves escrito y utilizar la etiqueta Highligt de C++ que nos facilitará leer tu código

Saludos y suerte.
  #3 (permalink)  
Antiguo 22/07/2015, 16:02
 
Fecha de Ingreso: julio-2015
Ubicación: México D.F.
Mensajes: 5
Antigüedad: 9 años, 4 meses
Puntos: 0
Respuesta: Lectura de arreglos para manipularlos

Hola, muchas gracias. De hecho ya revisé el tutorial y ya logro leer el archivo. Sin embargo, ahora necesito que los datos se puedan almacenar en un arreglo o vectores para poder operar con ellos. Muchas gracias!
  #4 (permalink)  
Antiguo 23/07/2015, 00:05
 
Fecha de Ingreso: octubre-2014
Ubicación: Madrid
Mensajes: 1.212
Antigüedad: 10 años, 1 mes
Puntos: 204
Respuesta: Lectura de arreglos para manipularlos

Cita:
Iniciado por Pancholin Ver Mensaje
Hola, muchas gracias. De hecho ya revisé el tutorial y ya logro leer el archivo. Sin embargo, ahora necesito que los datos se puedan almacenar en un arreglo o vectores para poder operar con ellos. Muchas gracias!
No es lo mismo un arreglo que un vector. Lo primero es un puntero donde tú te guisas toda la funcionalidad, mientras que lo segundo es una clase de C++ que permite almacenar y trabajar con colecciones de elementos.

Almacenar un listado de elementos lo puedes hacer con cualquiera de los dos... dado que estás aprendiendo imagino que estarán recortando las libertades para que aprendas siguiendo una hoja de ruta.

¿Con qué elemento tienes que resolver la práctica?

Y, por cierto, con respecto al manual de C++... yo en tu lugar no me limitaría a leer únicamente la parte que me interesa para resolver el problema. Tu nivel es bastante bajo y tiene bastantes lagunas... para ser mínimamente autónomo necesitas mejorar para tener una base fuerte.

Un saludo
  #5 (permalink)  
Antiguo 23/07/2015, 13:38
 
Fecha de Ingreso: julio-2015
Ubicación: México D.F.
Mensajes: 5
Antigüedad: 9 años, 4 meses
Puntos: 0
Respuesta: Lectura de arreglos para manipularlos

Hola Eferion. Muchas gracias por tu valioso comentario. Efectivamente mi programación en C++ es muy incipiente, sin embargo, no estoy totalmente en cero. Efectivamente el archivo que quiero leer es un vector de vectores, es decir un arreglo de vectores. Mi principal problema es almacenar este arreglo de tal manera que pueda posteriormente operar aritméticamente con las componentes de cada vector del arreglo.
Saludos!
  #6 (permalink)  
Antiguo 23/07/2015, 16:49
Avatar de xKuZz  
Fecha de Ingreso: febrero-2015
Ubicación: nullptr
Mensajes: 183
Antigüedad: 9 años, 9 meses
Puntos: 27
Respuesta: Lectura de arreglos para manipularlos

Lo que dice eferion es que con la palabra vector solemos hacer referencia al vector de la STL ejemplo:
Código C++:
Ver original
  1. std::vector<int> mivector;

Un arreglo sería:
Código C++:
Ver original
  1. int arreglo[tamanio_arreglo];

Por tanto un arreglo de vectores lo comprendemos como:
Código C++:
Ver original
  1. std::vector<int> arreglo;[tamanio_arreglo]

¿Es a eso a lo que te refieres o a esto siguiente?
Código C++:
Ver original
  1. int arreglo[tamanio_filas][tamanio_columnas];

Esto último sería un arreglo de arreglos (intenta llamarlo así para que nos entendamos bien porque no consigo enterarme de lo que quieres hacer). Independientemente de lo que sea. La cuestión no es muy compleja. Leer los datos del archivo no es nada difícil. Si quieres documentación sobre cómo trabajar con las entradas y salidas de C++ existen cientos de manuales sólo es cuestión de utilizar un buscador y encontrarás información abundante y si dominas el inglés habrá todavía más información y generalmente mejor. Como ya te dijo eferion no consiste en mirar cómo se hace lo que tengo que hacer sino comprender lo que C++ te ofrece y utilizar de una forma inteligente para solucionar tu problema.

¿Y si los datos son como los que pusistes en el primer post, no necesitarías un (vector || arreglo) de (vector || arreglo) de (vector || arreglo), ya que tienes 8 filas, con 3 contenedores, de 4 elementos cada uno o no lo comprendo bien?

Última edición por xKuZz; 23/07/2015 a las 17:08
  #7 (permalink)  
Antiguo 23/07/2015, 17:58
 
Fecha de Ingreso: julio-2015
Ubicación: México D.F.
Mensajes: 5
Antigüedad: 9 años, 4 meses
Puntos: 0
Respuesta: Lectura de arreglos para manipularlos

Muchas gracias por las respuestas xKuZz, lo aprecio mucho. Te explico un poco más sobre el arreglo que quiero leer:

{{1, 1, 3, 13312}, {1, 2, 7, 13393}, {1, 3, 5, 18999}}
{{2, 1, 8, 66962}, {2, 2, 6, 12901}, {2, 3, 8, 32862}}
{{3, 1, 7, 41614}, {3, 2, 5, 61455}, {3, 3, 7, 75502}}
{{4, 1, 7, 68611}, {4, 2, 7, 15513}, {4, 3, 3, 31933}}
{{5, 1, 3, 51015}, {5, 2, 8, 27722}, {5, 3, 3, 50555}}
{{6, 1, 2, 21665}, {6, 2, 2, 40999}, {6, 3, 6, 41725}}
{{7, 1, 5, 21500}, {7, 2, 1, 32539}, {7, 3, 2, 20462}}
{{8, 1, 2, 64630}, {8, 2, 6, 52658}, {8, 3, 5, 73321}}

Tenemos 8 vectores (renglones) que a su vez están compuestos de 3 vectores (columnas) que a su vez están compuestos de 4 componentes numéricos.
Cada renglón corresponde a una tienda y en cada vector que compone una tienda cada componente significa lo siguiente: la primera componente significa el número de tienda, la segunda componente significa el consecutivo de venta, la tercera el tiempo entre ventas y la cuarta componente el ticket de venta.
Una vez que logre adquirir los datos y guardarlos en un arreglo, haré cálculos estadísticos como por ejemplo calcular la media o promedio del ticket de cada tienda por ejemplo.

Tengo este código que obtuve del foro y con el cual logro leer el arreglo tal cual, pero según yo no guarda los datos en un arreglo que luego pueda manipular:

Código C++:
Ver original
  1. #include <fstream>
  2. #include <iostream>
  3. using namespace std;
  4.  
  5. int main()
  6. {
  7.     ifstream archivo("fichero.txt");
  8.     char linea[128];
  9.     long contador = 0L;
  10.  
  11.     if(archivo.fail())
  12.     cerr << "Error al abrir el archivo fichero.txt" << endl;
  13.     else
  14.     while(!archivo.eof())
  15.     {
  16.         archivo.getline(linea, sizeof(linea));
  17.         cout << linea << endl;
  18.  
  19.         if((++contador % 24)==0)
  20.         {
  21.             cout << "CONTINUA...";
  22.             cin.get();
  23.         }
  24.     }
  25.  
  26.     cout << archivo;
  27.     archivo.close();
  28.     return 0;
  29. }

Espero esto proporcione más información de lo que intento hacer.
Esto ya lo he hecho en intérpretes como Mathematica pero quiero realizar en leguaje de alto nivel como c++.

Saludos!
  #8 (permalink)  
Antiguo 24/07/2015, 02:25
Avatar de xKuZz  
Fecha de Ingreso: febrero-2015
Ubicación: nullptr
Mensajes: 183
Antigüedad: 9 años, 9 meses
Puntos: 27
Respuesta: Lectura de arreglos para manipularlos

Lo que tienes es lo que has copiado del tutorial, ya que la cantidad es estática siempre en tus "vectores" puedes utilizar memoria estática, o sea arreglos. Por ejemplo:

Código C++:
Ver original
  1. int mismuestras[24][4];

Si el número de muestras/tiendas fuese variable, ya si que necesitaría usar almenos un vector STL:

Código C++:
Ver original
  1. std::vector<int[4]>;
Eso tienes que ponerlo ante de meterte en el bucle de lectura. Dado como tienes escritos tus datos deberías crear un char para ir leyendo uno a uno los datos utilizar archivo.get() que te devuelve un carácter y archivo.ignore() y en vez de un bucle while necesitarás una cuantos bucles for anidados. Suerte.

Etiquetas: arreglos, lectura, numericos
Atención: Estás leyendo un tema que no tiene actividad desde hace más de 6 MESES, te recomendamos abrir un Nuevo tema en lugar de responder al actual.
Respuesta




La zona horaria es GMT -6. Ahora son las 16:39.