Está en la página 1de 4

UNIVERSIDAD NACIONAL MAYOR DE SAN MARCOS

FACULTAD DE ING. DE SISTEMAS E INFORMATICA


CADENAS
Una cadena es un conjunto de caracteres, o valores de tipo "char", terminados con
el carcter nulo, es decir el valor numrico 0.
Internamente se almacenan en posiciones consecutivas de memoria. Este tipo de
estructuras recibe un tratamiento especial, y es de gran utilidad y de uso continuo.
La manera de declarar una cadena es la siguiente:
char identificador [tamao];
Al declarar una cadena debe tener en cuenta reservar una posicin para almacenar
el carcter nulo.
Es posible hacer referencia a cada uno de los caracteres individuales de la cadena,
indicando la posicin.
CASO:
Elabore un programa que permita auto generar el cdigo de identificacin de un
asegurado de EsSalud, el mismo que consiste en lo siguiente:
Los dos primeros dgitos de la izquierda pertenecen al ao, los dos
segundos al mes y los dos siguientes al da de nacimiento.
El stimo dgito pertenece al sexo. Si es varn le corresponde el 1, en caso
contrario el 0.
Aparecen a continuacin cuatro caracteres que corresponden a la primera y
cuarta letra de los apellidos paterno y materno respectivamente y una quinta
letra que corresponde a la primera letra del primer nombre.
Los tres ltimos dgitos corresponden a un nmero aleatorio entero entre
001 y 333.
/*********************************
* Ingresar datos del asegurado
*
* y generar su cdigo de ESSALUD *
**********************************/
#include <iostream>
using namespace std;
main( ) {
-1-

int r; // Nmero aleatorio entre 1 y 333


int i; // Subndice de la cadena del cdigo de afiliacin a EsSalud
int t; // Variable auxiliar para almacenar nmero aleatorio
temporalmente
int z; // Nmero de caracteres de los apellidos paterno y materno
long int y; // Ao o mes o da de nacimiento en nmeros
char ap[20]; // Apellido paterno
char am[20]; // Apellido materno
char nom[20]; // Nombres
char an[5]; // Ao de nacimiento en caracteres
char mn[3]; // Mes de nacimiento en caracteres
char dn[3]; // Da de nacimiento en caracteres
char s1[8]; // Primera subcadena del cdigo de afiliacin a EsSalud
char s2[9]; // Segunda subcadena del cdigo de afiliacin a EsSalud
char g[4]; // Nmero aleatorio en caracteres
char h; // Carcter que define al sexo
char *endptr;
cout<<"Fecha de nacimiento"<<endl;
do{
cout<<"Anio (entre 1800 y 2013) : ";
gets(an);
y = strtol(an, &endptr, 10);
}while (y<1800 || y>2013);
s1[0] = an[2]; s1[1] = an[3];
do{
cout<<"Mes (2 digitos) : ";
gets(mn);
y = strtol(mn, &endptr, 10);
}while(y<1 || y> 12);
s1[2] = mn[0]; s1[3] = mn[1];
do{
cout<<"Dia (2 digitos) : ";
gets(dn);
y = strtol(dn, &endptr, 10);
}while (y<1 || y>31);
s1[4] = dn[0]; s1[5] = dn[1];
do{
cout<<"Sexo (M/F) : ";
h = toupper(getchar());
}while (h != 'M' && h != 'F');

-2-

if (h == 'M')
h = '1';
else
h = '0';
s1[6] = h;
fflush(stdin);
cout<<endl<<"Apellido paterno: "; gets(ap);
strcpy (ap, strupr (ap) );
s2[0] = ap[0];
z = strlen(ap);
if(z>=4)
s2[1] = ap[3];
else
s2[1] = '0';
cout<<"Apellido materno: "; gets(am);
strcpy(am, strupr(am));
s2[2] = am[0];
z = strlen(am);
if(z>=4)
s2[3] = am[3];
else
s2[3] = '0';
cout<<"Nombres : "; gets(nom);
strcpy(nom, strupr(nom));
s2[4] = nom[0];
// Generar valores random
srand(time(NULL));
r = rand()%333+1;
itoa(r, g, 10);
t = r;
if(t<10) {
s2[5] = '0'; s2[6] = '0'; s2[7] = g[0];
}
else {
if (t<100) {
s2[5] = '0'; s2[6] = g[0];
if (t%10==0)
s2[7] = '0';
else
s2[7] = g[1]; }

-3-

else {
s2[5] = g[0];
if (t%10==0)
s2[7] = '0';
else
s2[7] = g[2];
t=t/10;
if (t%10==0)
s2[6] = '0';
else
s2[6] = g[1];
}
}
strcat(s1,s2);
cout<<"Codigo EsSalud : ";
cout<<s1;
cout<<endl;
system("pause");
}
Ejecucin

-4-

También podría gustarte