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

Archivos de entrada y salida

Estas en el tema de Archivos de entrada y salida en el foro de C/C++ en Foros del Web. Ando practicando archivos en C, me han dejado esta tarea pero me he estancado, espero me den alguna idea de como resolverlo, muchas gracias El ...
  #1 (permalink)  
Antiguo 04/02/2013, 19:56
 
Fecha de Ingreso: febrero-2013
Ubicación: Mexico
Mensajes: 2
Antigüedad: 11 años, 2 meses
Puntos: 0
Archivos de entrada y salida

Ando practicando archivos en C, me han dejado esta tarea pero me he estancado, espero me den alguna idea de como resolverlo, muchas gracias

El archivo de entrada entrada.txt contendrá una serie de registros de longitud variable separados por avances de línea. Cada registro deberá constar de tres campos de longitud variable separados por una barra vertical. El primer campo será un número de uno a cuatro dígitos escrito en decimal en el rango de 1 a 9999 (el campo de año de una fecha). El segundo campo será una cadena alfabética con al menos un caracter (el nombre del mes en una fecha). El tercer campo será un número de uno a dos dígitos escrito en decimal en el rango de 1 a 31 (el campo de día en una fecha). Aunque cada campo tiene un rango bien definido es posible que aparezcan registros con contenidos inválidos.

El archivo de salida salida.txt deberá contener una serie de registros de longitud variable separados por avances de línea. Cada registro deberá constar de tres campos de longitud variable separados por una barra vertical. El primer campo deberá ser un número de uno a cuatro dígitos escrito en decimal en el rango de 0 a 9999. El segundo campo deberá ser una cadena alfabética. El tercer campo deberá ser un número de uno a dos dígitos escrito en decimal en el rango de 0 a 31. Excepto por el valor 0 ningún campo de la salida podrá comenzar con el valor 0.

La idea general es transformar cada uno de los registros del archivo de entrada en un registro del archivo de salida, suponiendo que ambos representan fechas. En un registro de la entrada puede ocurrir que cualquiera de los campos no corresponda con la descripción mostrada arriba o que la cadena alfabética no represente un mes, en cuyo caso el registro en la salida deberá decir 0|ilegal|0. Un mes puede quedar representado por cualquier prefijo de su nombre siempre y cuando lo identifique de forma única. Por ejemplo el mes enero puede quedar representado por cualquiera de las cadenas e, ene o enero. Por otro lado la cadena ma es ilegal porque queda la duda de si representa a marzo o a mayo. Para facilitar las cosas puedes considerar que enero siempre tendrá 31 días, febrero siempre tendrá 28 días, etc.

Ejemplo de entrada.txt
2009|jul|17
2009|ju|17
dosmil|julio|17
1972|s|02
2009|07|17
01|e|1
hola|mundo|cruel

ejemplo de salida.txt
2009|julio|17
0|ilegal|0
0|ilegal|0
1972|septiembre|2
0|ilegal|0
1|enero|1
0|ilegal|0
  #2 (permalink)  
Antiguo 04/02/2013, 21:09
 
Fecha de Ingreso: enero-2012
Ubicación: Buenos Aires
Mensajes: 745
Antigüedad: 12 años, 3 meses
Puntos: 35
Respuesta: Archivos de entrada y salida

Hola. No soy un experto en C ni mucho menos, pero bien, por lo que entendí, mas o menos lo que tienes es un archivo CSV pero en lugar de comas usas el caracter "|". Lo que primero deberías hacer es es abrir el archivo y almacenar cada línea en un vector. Luego, hacer una función que recorra cada línea y devuelva los índices de ambos separadores. Una vez hecho esto, tendrás los valores en las posiciones 0 - sep1, (sep1 + 1) - sep2 y (sep2 + 1) - sizeof(linea). Fácilmente puedes almacenarlos en tres variables.
Creo que por último únicamente debes analizar los datos obtenidos.

Espero que te sirva.

  #3 (permalink)  
Antiguo 04/02/2013, 21:25
 
Fecha de Ingreso: febrero-2013
Ubicación: Mexico
Mensajes: 2
Antigüedad: 11 años, 2 meses
Puntos: 0
Respuesta: Archivos de entrada y salida

graxx, lo intentare como dices!
  #4 (permalink)  
Antiguo 06/02/2013, 12:53
 
Fecha de Ingreso: diciembre-2011
Ubicación: CABA
Mensajes: 433
Antigüedad: 12 años, 4 meses
Puntos: 94
Respuesta: Archivos de entrada y salida

Hola! generalmente estos programas de archivos tipo CSV estan buenos para resolverlos utilizando la funcion strtok de string.h, ya que dicha funcion te permite separar una cadena segun un delimitador, en tu caso el "|".


Saludos

Etiquetas: entrada, salida
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 11:35.