Ver Mensaje Individual
  #1 (permalink)  
Antiguo 04/02/2013, 19:56
mago_de_oz_98
 
Fecha de Ingreso: febrero-2013
Ubicación: Mexico
Mensajes: 2
Antigüedad: 11 años, 3 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