Está en la página 1de 4

/* Programa de almacen de datos en memoria.

Ingenieria de
Telecomunicaciones UNSA 2018*/

#include <iostream>
#include <stdio.h>
#include <string.h>
#include <stdlib.h>

using namespace std;


//inicializamos las variables y los arrays
char nombres[100] = "\0" ;
char apellidos[100] = "\0";
int edad=0;
char direccion[100] = "\0";
int cp=0;
//Definimos las funciones que vamos a usar
int encontrarnumeros(char * a);
void menu();
void ingresonombres();
void ingresoapellidos();
void ingresoedad();
void ingresodireccion();
void ingresocp();
void mostrardatos();

int main()

{
int opcion;
while (1)
{
menu();//mostramos el menu
scanf("%d",&opcion);//almacenamos en la variable opcion el numero que ingrese el
usuario
getchar(); //usamos este getchar para eliminar el caracter de nueva linea que deja esta
funcion
//https://www.geeksforgeeks.org/problem-with-scanf-when-there-is-fgetsgetsscanf-
after-it/
switch(opcion)//hacemos llamada a diversas funciones de acuerdo a lo que
ingreso el usuario como opción
{
case 1:ingresonombres();break;
case 2:ingresoapellidos();break;
case 3:ingresoedad();break;
case 4:ingresodireccion();break;
case 5:ingresocp();break;
case 6:mostrardatos();break;
case 7:exit (EXIT_SUCCESS);break;
}
}
}
int encontrarnumeros(char * a)//en esta funcion vamos a usar la funcion strchr que
busca en una cadena de caracteres un caracter que le proporcionemos {

int i;
for (i=0;i<10;i++)//este bucle va del 0 al 9 (numeros) que se supone no deben estar en el
arreglo
{
if (strchr(a,i +'0')!=0)//i+'0' convierte un int en su char respectivo de acuerdo al
codigo ASCII
{
return 1;//retorna 1 si encuentra un numero
}
}
return 0;//retorna 0 si no encuentra un número
}

void menu()//menu de opciones


{
printf("MENU PRINCIPAL\n");
printf("--------------\n");
printf("1.\tingrese sus nombres\n");
printf("2.\tingrese sus apellidos\n");
printf("3.\tingrese su edad\n");
printf("4.\tingrese su direccion\n");
printf("5.\tingrese su codigo postal\n");
printf("6.\tmostrar datos\n");
printf("7.\tsalir\n");
printf("\nSeleccione una opcion\n");
}
void ingresonombres()
{
while (1)
{
printf("ingrese sus nombres\n");
scanf("%[^\n]%*c",nombres);//lee datos
if (encontrarnumeros(nombres)==1)//comprueba si los datos ingresados
contienen numeros, si los contiene, vuelve a pedir el ingreso de datos
{
printf("\alos nombres contiene numeros. Vuelva a ingresar sus
datos!\n"); memset(nombres, 0, sizeof(nombres));//limpia el array }
else
{
nombres[0] = toupper(nombres[0]);//toupper sirve para convertir
letras minusculas a mayusculas, aqui convertimos la primera letra
for (int j=1; j <= 100; j++)
{
if ( nombres[j-1] == ' ' )//luego convertimos cada letra después
de un espacio
nombres[j] = toupper(nombres[j]);
}
break;
}
}
}

void ingresoapellidos()
{
while (1)
{
printf("ingrese sus apellidos\n");
scanf("%[^\n]%*c",apellidos);//lee datos
if (encontrarnumeros(apellidos)==1)//comprueba si los datos ingresados
contienen numeros, si los contiene, vuelve a pedir el ingreso de datos
{
printf("\alos apellidos contiene numeros. Vuelva a ingresar sus
datos!\n"); memset(apellidos, 0, sizeof(apellidos));//limpia el
array }
else
{
apellidos[0] = toupper(apellidos[0]);//toupper sirve para convertir
letras minusculas a mayusculas, aqui convertimos la primera letra
for (int j=1; j <= 100; j++)
{
if ( apellidos[j-1] == ' ' )//luego convertimos cada letra después
de un espacio
apellidos[j] = toupper(apellidos[j]);
}
break;
}
}
}

void ingresoedad()
{
while (1)
{
printf("%s","ingrese su edad\n");
scanf("%d",&edad);
if (edad > 100 || edad < 0 )
{
printf("%s","\aedad fuera del limite permitido (0 a 100) . Vuelva a
ingresar sus datos!\n");//compobamos si la edad esta entre 0 y 100 años
}
else
{
break;
}
}
}

void ingresodireccion()
{
printf("ingrese su direccion\n");
scanf("%[^\n]%*c",direccion);
direccion[0] = toupper(direccion[0]);
for (int j=1; j <= 100; j++)
{
if ( direccion[j-1] == ' ' )
direccion[j] = toupper(direccion[j]);
}
}

void ingresocp()
{
while (1)
{
printf("ingrese su codigo postal (01000-
95000)\n"); scanf("%d",&cp);
if (cp > 95000 || cp < 1000 )//compobamos si el cp esta entre 1000 y 95000
{
printf("\acodigo postal fuera del limite permitido . Vuelva a ingresar sus
datos!\n");
}
else
{
break;
}
}
}

void mostrardatos() //mostramos los datos almacenados


{
printf("%s"," SUS DATOS \n");
printf("%s","-------------\n");
printf("nombres : %s\n",nombres);
printf("apellidos : %s\n",apellidos);
printf("edad : %d\n",edad);
printf("direccion : %s\n",direccion);
printf("codigo postal : %05d\n",cp);
printf("\n");
}