RFC en C++

Iniciado por anita0421, 13 Noviembre 2012, 04:04 AM

0 Miembros y 1 Visitante están viendo este tema.

anita0421

Chavos me encargaron una tarea muy difícil y es para MAÑANA! aquí se las dejo para ver si alguien me puede ayudar... en verdad no le entiendo.

e pretende solicitar el nombre completo del alumno y la fecha de nacimiento en formato numérico.

Sigue la siguiente algoritmo para el manejo decadenas (en caso de que lo requeras):

for(int posicion=0 /* primer caracter */ , posicion < strlen(nombre) ; posicion++)
   if (nombre[posicion]=' ')
       cout << "en la posicion "<< posicion << " se encuentra un espacio " << endl;

Este bloque de código te servirá para detectar donde se encuentran espacios dentro de la cadena del nombre y poder definir los límites y separar primer nombre del segundo y primer apellido del segundo. Esto en el caso de que ingreses todo el nombre sobre una misma variable.

Se te proporciona el siguiente enlace para extraer una fraccion de una cadena utilizando una FDP la cual la puedes aprovechar para complementar tu codificación para resolver siertas tareas de este proyecto.

El programa deberá filtrar para el nombre las entradas siguientes: 'de', 'los', 'la'. Ejemplo: Juan de los Rios, Alfredo de la O, Pedro de Avila, etc. Esto quiere decir que no se omitirán de la entrada o ingreso de datos pero si se filtrarán posteriormente (20%).

La política es que simule un RFC con el primer caracter de cada bloque de nombre, ejemplo: Javier Hugo Esquivel Guerrero, cuya respuesta de los primeros 4 dígitos será JHEG. En el caso si tiene un solo nombre, como no existe un segundo nombre, sobreescribirá como segundo caracter una "X", ejemplo: Luis Martines Acosta,  por lo que la salida será LXMA. Al igual para si solo contara con un apellido, ejemplo: Luz Maria Garcia, respondería a una salida LMGX (20%).

Si se presentase las uniones 'de', 'los', 'la', ejemplo: Pedro de Avila Martines, el resultado será PXAM.

Se deberá contar con una variable llamada "rfc" la cual almacenará las iniciales antes descritas concatenado con la fecha de nacimiento en el formato aammddv mas un dígito verificador (v) que responderá a si el año corresponde al siglo XXI o siglo XX para lo cual si es 0 corresponderá a XX y si es 1 corresponderá a XXI, ya que para fines prácticos y que este sistema pudiera operar varias décadas y existiera en la cadena de dígitos un año 50 sería claro detectar si éste dato corresponde a 1950 o 2050 (20%).

Ahora viene lo interesante. Crearás un FDP alojada en una librería que se llamará "genera_rfc()" la cual si se le invoca de la siguiente manera (20%):

genera_rfc("?");

mostrará una ayuda de que propósito tiene dicha rutina, cuantos parámetros utiliza, de que tipo son y el orden de cada uno dentro del argumento de la función y un ejemplo. Finalmente pedirá "oprima cualquier tecla para continuar..." y limpiar la pantalla. Para lo cual tu lo diseñarás a tu conveniencia, con el número de parámetros que requieras, pero uno de ellos será la variable "rfc" que como se describe anteriormente almacenará las iniciales antes descritas concatenado con la fecha de nacimiento en el formato aammddv mas un dígito verificador en función a los parámetros del mismo argumento de la función.

Subir solo el archivo librería que llevará forzosamente por nombre "cadenas_shcp.h" donde se encuentra la función en mención llamada genera_rfc()





Ahí donde dice del enlace, el archivo es este:


#include <stdlib.h>  // para system()
#include <stdio.h>  // para printf()

int substr(int start, int stop, const char *text)
{
   // posición final debe ser mayor o igual a posicion inicial
   printf("%.*s\n", start<=stop? stop + 1 - start : 0, &text[start]); // & por ser declarado "text" como cadena y solo tomara un caracter
   return 0;
}

int main()
{
   substr(8,12,"A mi me gusta programar"); // (desde,hasta,cadena)
   system("pause");

   return 0;
}