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

Leer una tabla en un .txt

Estas en el tema de Leer una tabla en un .txt en el foro de C/C++ en Foros del Web. Hola queria preguntar si me dan una mano con esto, segun la siguiente tabla tengo buscar cuantas unidad del producto "x" se vendieron, la tabla ...
  #1 (permalink)  
Antiguo 29/11/2008, 21:07
 
Fecha de Ingreso: noviembre-2008
Mensajes: 1
Antigüedad: 15 años, 5 meses
Puntos: 0
Exclamación Leer una tabla en un .txt

Hola queria preguntar si me dan una mano con esto, segun la siguiente tabla tengo buscar cuantas unidad del producto "x" se vendieron, la tabla esta en un archivo de texto donde los campos son separados por un ";" , seria algo asi (el primer campo es la fecha, el 2º es el producto, el 3º son las unidades que se vendieron )

12/03/08;X;5
13/03/08;Y;3
13/03/08;X;5
14/03/08;Y;6
15/03/08;T;8
15/03/08;X;7

Como veran la tabla es bastante mas larga solo escribi una porcion, pero segun lo que se busca en esa tabla la cantidad de productos "X" vendidos seria de 17. Tengo que hacer un programa en C que me permita resolver esto pero en google encuentra mucha informacion pero no lo que buzco.
El pseudocodigo que habia pensado seria el siguiente:

Código:
Begin

total: interger; //declaracion de las variables que necesito
var_producto: character;
var_producto,total=0;// Asignacion del las variables

print("Inserte el producto que busca: ");
read(var_producto);
read(registro:fecha;producto;cantidad_vendida);
while(registros) do //osea mientras haya lineas en el archivo
if(var_producto=producto ) //osea si la variable producto que solicita el usuario es igual a la que leyo en el registro
total=total+cantidad_vendida;
end if
read(registro);
end while do
print("La cantitdad de ventas de dicho producto es de `total`");


End
Espero que puedan ayudarme, saludos.
  #2 (permalink)  
Antiguo 30/11/2008, 10:41
poi
 
Fecha de Ingreso: octubre-2008
Mensajes: 73
Antigüedad: 15 años, 6 meses
Puntos: 2
Respuesta: Leer una tabla en un .txt

Hola, de C no se mucho pero lo que se me ocurre es leer el fichero linea a linea y si te fijas la X y la cantidad siempre empiezan en la misma posicion.

Por ejemplo:

lee linea
si la posicion 9 es una X
apartir de la posicion 11 esta la cantidad

Lo siento, pero ya te digo que de C no ando muy bien
  #3 (permalink)  
Antiguo 01/12/2008, 21:29
 
Fecha de Ingreso: febrero-2006
Mensajes: 49
Antigüedad: 18 años, 2 meses
Puntos: 1
Respuesta: Leer una tabla en un .txt

Buenasss

El programa es bastante fácil, lo único necesario es hacer un buen planteo. Primero necesitas absorver una linea del archivo, luego absorver los datos de cada una de ellas, y luego fijarte si en esos datos esta la 'X' que necesitas e incrementar la variable, algo como lo que planteaste. Te dejo un codigo de ayuda.

Código HTML:
int main (void)
{
      int cant = 0, x;
      FILE * file;

      file = fopen(...);
      printf("Ingrese la 'X': ");
      scanf ("%d", &x);

      obtenerDatos (file, &cant, x);
      printf("Cantidad de unidades x vendidas: %d\n", cant);
      return 0;
}

void obtenerDatos (FILE * file, int * cant, int x)
{
      char line[100];
      int dia, mes, anio, prod, unidades;

      while (fgets (line, 100, file) != NULL)   // Mientras haya lineas en el archivo
      {
              if (sscanf (line, "%d/%d/%d;%d;%d\n", &dia, &mes, &anio, &prod, &unidades) == 5)
                     if (prod == x)
                              *cant += unidades;
      }
}
Faltarian algunos retoques pero la idea es esa, espero que te haya ayudado.
La fecha no es necesario leerla, pero la consideré por posibles errores de sintaxis en el archivo, igualmente para poder comtemplar todos los posibles errores de parser harían falta más ajustes pero complicaría mucho el código y el análisis sintáctico no es a lo que apuntás, asi que así estaría mas o menos bien.

Suerte.
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 12:15.