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

Programa atravesado en C

Estas en el tema de Programa atravesado en C en el foro de C/C++ en Foros del Web. El caso es que estoy intentando hacer un programa en C, pero no termino de enterder el como hacer que lea un fichero y lo ...
  #1 (permalink)  
Antiguo 11/01/2012, 06:58
 
Fecha de Ingreso: enero-2012
Mensajes: 11
Antigüedad: 12 años, 3 meses
Puntos: 0
Programa atravesado en C

El caso es que estoy intentando hacer un programa en C, pero no termino de enterder el como hacer que lea un fichero y lo pase a un vector de registros...

El programa trata de un supermercado. El cual ha creado un archivo .txt en el que ha almecenado los datos en 3 lineas.

del modo:
-Codigo del producto (5 cifras)
-Departamento de ventas (2 cifras)
-Precio- Un entero

Ejemplo:

12453
45
123
87693
02
12378

Asi todo el Rato....

Y tengo que abrir el fichero- Lo cual ya lo tengo echo.
Y una vez abierto. Tengo que pasarlo a un vector de registros y los del departamento 22 tengo que marcarlos con un "M", los demas tengo que marcalos con una "O" y los del departamento central con una "C" (El departamento central siempre empieza por 0 (ejemlo 18 o 16).

El vector de registros es:

struct ventas{
int codigo
int departament
int precio
char tipo
}

Siento la parrafada, pero no se como hacerlo asi que cualquier ayuda me gustaria, Saberla.

Gracias de antemano.
  #2 (permalink)  
Antiguo 11/01/2012, 07:31
Avatar de CapacProg  
Fecha de Ingreso: marzo-2010
Ubicación: Lima - Perú
Mensajes: 324
Antigüedad: 14 años
Puntos: 71
Respuesta: Programa atravesado en C

Hola, lo que se nota de su problema es:
  1. No sabe cuantos registros tiene su archivo, sin embargo su archivo debe de tener un múltiplo de 3 linea(s).
  2. No sabe la estructura donde almacenar los datos al leerlo.
Bien el primer punto no es muy malo ya que se supone que su archivo esta bien formado.
El segundo punto es vital, la forma que le puedo recomendar es crearse un vector de punteros a su tipo de registro con una longitud considerable, suponiendo que de ese tamaño no se va a pasar "nunca", o primero ver cuantos registros tiene en su archivo y luego dinámicamente con la función malloc ponerle longitud (este último forzaría a q lea el archivo al menos dos veces). Una vez ya teniendo la estructura de almacenamiento procede a leer el archivo de 3 en 3 lineas y por cada lectura de 3 lineas declara dinámicamente una variable de su tipo registro (al ser dinámico la forma de extraer memoria para su registro este será un puntero), pone los datos en este y finalmente hace q el primer elemento del vector de punteros apunte a esta variable; el proceso lo repite asi hasta el final, para las líneas que quedan en su archivo.

Si tiene dudas me pregunta, pero al menos intente y postee su código.
__________________
%
El mejor guerrero no es el que triunfa siempre sino el que vuelve sin miedo a la batalla.
%
  #3 (permalink)  
Antiguo 12/01/2012, 09:32
 
Fecha de Ingreso: enero-2012
Mensajes: 11
Antigüedad: 12 años, 3 meses
Puntos: 0
Respuesta: Programa atravesado en C

Si tiene un determinado numero de registros (100), el problema es que por mas que miro en internet no termino de entender el mecanismo de este tipo de vectores y como pasar del fichero al vector. Si no este ejercicio me serviria cualquiera, en el que aparezca un fichero y luego un vector de este tipo.

Gracias por contestar.
  #4 (permalink)  
Antiguo 12/01/2012, 10:13
Avatar de CapacProg  
Fecha de Ingreso: marzo-2010
Ubicación: Lima - Perú
Mensajes: 324
Antigüedad: 14 años
Puntos: 71
Respuesta: Programa atravesado en C

Entonces le sugiero que revise:
Punteros en C http://linuxupc.upc.es/~pep/OLD/Punteros.html
Manejo de memoria dinámica en C http://sopa.dis.ulpgc.es/so/cpp/intro_c/introc75.htm
Asignación dinamica de memoria a tipos strutc en C http://www.fismat.umich.mx/mn1/manual/node10.html
__________________
%
El mejor guerrero no es el que triunfa siempre sino el que vuelve sin miedo a la batalla.
%

Etiquetas: fichero, programa, struct
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 19:49.