/**
 * \brief Solicita un string
 * \param requestMessage Es el mensaje a ser mostrado para solicitar el dato
 * \param requestMessage Es el mensaje a ser mostrado en caso de error
 * \param input Array donde se cargará el texto ingresado
 * \return -
 *
 */
void getValidString(char requestMessage[],char errorMessage[], char input[])
{

    while(1)
    {
        if (!getStringLetras(requestMessage,input))
        {
            printf ("%s\n",errorMessage);
            continue;
        }
        cleanStdin();
        break;
    }

}
예제 #2
0
int main()
{
    //Inicializo la estructura
    EPersona arrayPersona[QTY_PEOPLE];
    //_________________________________________________
    EPersona personaAux;

    char auxNombreStr[50];
    char auxDniStr[50];
    int auxDni;
    char auxEdadStr[50];
    int auxEdad;
    int IndexLibre;
    int IndexEncontrado;
    //Seteo el estado
    int i,j;
    setearEstado(arrayPersona,QTY_PEOPLE,0);/**< Se indica con -1 que esa posicion esta vacia */

    char seguir='s';
    int opcion=0;


    while(seguir=='s')
    {
        //Solicito la opcion y armo el Menu
        opcion = getInt("\n\n1 - Agregar persona \n2 - Borrar persona \n3 - Imprimir lista ordenada por  nombre\n4 - Imprimir grafico de edades\n5 - SALIR\n\n\n");

        switch(opcion)
        {
            case 1:
                //Busco lugares libres
                IndexLibre = BuscarLugarLibre(arrayPersona,QTY_PEOPLE);
                if(IndexLibre == -1)
                {
                    printf("\n\nNO QUEDAN LUGARES LIBRES!!!\n");
                    break;
                }
                //SOLICITO LOS DATOS
                printf("\AGREGAR PERSONA\n\n");
                if (!getStringLetras("Ingrese el nombre: ",auxNombreStr))
                {
                    printf ("El nombre debe estar compuesto solo por letras\n");
                    break;
                }

                if(!getStringNumeros("Ingrese la edad: ",auxEdadStr))
                {
                    printf ("La edad debe ser numerica\n");
                    break;
                }
                auxEdad = atoi(auxEdadStr);

                if (!getStringNumeros("Ingrese el dni: ",auxDniStr))
                {
                    printf ("El dni debe ser numerico\n");
                    break;
                }
                auxDni = atoi(auxDniStr);

                if(BuscarPersonaPorDni(arrayPersona,QTY_PEOPLE,auxDni) != -1)
                {
                    printf("\n\nEL DNI YA EXISTE!!!\n");
                    break;
                }
                //GUARDO EN LA ESTRUCTURA
                arrayPersona[IndexLibre].dni = auxDni;
                strcpy(arrayPersona[IndexLibre].nombre,auxNombreStr);
                arrayPersona[IndexLibre].edad = auxEdad;
                arrayPersona[IndexLibre].estado = 1;

                break;
            case 2:
                printf("\nBORRAR PERSONA\n\n");
                 if (!getStringNumeros("Ingrese el dni de la persona a dar de baja: ",auxDniStr))
                {
                    printf ("El dni de la persona debe ser numerico\n");
                    break;
                }
                auxDni = atoi(auxDniStr);
                IndexEncontrado = BuscarPersonaPorDni(arrayPersona,QTY_PEOPLE,auxDni);
                if(IndexEncontrado == -1)
                {
                    printf("\n\nNO SE ENCUENTRA ESE DNI\n");
                    break;
                }
                arrayPersona[IndexEncontrado].estado = 0;
                break;
            case 3:
                printf("\nLISTAR PERSONAS\n\n");
                //RECORRRO EL ARRAY DE PERSONAS
                for(i=0; i < QTY_PEOPLE - 1; i++)
                {
                    if(arrayPersona[i].estado == 0)
                    {
                        continue;
                    }
                    for(j=i+1; j < QTY_PEOPLE; j++)
                    {
                        if(arrayPersona[i].estado == 0)
                        {
                            continue;
                        }
                        if(strcmp(arrayPersona[i].nombre,arrayPersona[j].nombre)>0)
                        {
                            personaAux = arrayPersona[j];
                            arrayPersona[j] = arrayPersona[i];
                            arrayPersona[i] = personaAux;
                        }
                    }
                }
                //RECORRO Y ARMO LA LISTA
                 for(i=0;i < QTY_PEOPLE; i++)
                {
                    if(arrayPersona[i].estado != 0)
                    {
                        printf("\n %s - %d - %d", arrayPersona[i].nombre,arrayPersona[i].dni,arrayPersona[i].edad);
                    }
                }
                break;
            case 4:
                //ARMAR GRAFICO
                //RECORRO EL ARRAY DE PERSONAS
                Graficar(arrayPersona,QTY_PEOPLE);
                break;
            case 5:
                seguir = 'n';
                break;
        }
    }

    return 0;
}
예제 #3
0
int main()
{
   persona arrayP[Q];
   persona arrayAuxiliar;

   char auxNombre[50];
   char auxE[50];
   char auxD[50];
   int auxDNI,auxEdad,i;
   int hasta18=0,de19a35=0,mayorDe35=0, mayor;


   int flag=0;

   int indicarLugarLibre;
   int indicarResultadoBusqueda;

   int opcion=0;
   inicializar(arrayP,Q,0);

   while(opcion != 6)
   {
       printf("\n -- ABM de Usuarios -- \n");
       opcion=getInt("\n1. Alta \n2. Baja \n3. Modificar \n4. Listar \n5. Imprimir grafico \n6. Salir\n");
       switch(opcion)
       {
            case 1:
                system("cls");
                indicarLugarLibre=buscar(arrayP,Q,0);
                if(indicarLugarLibre == -1)
                {
                    printf("\n No quedan mas lugares libres!!\n");
                    break;
                }
                printf("\n - Alta - \n");
                if(!getStringLetras("Ingrese nombre: ",auxNombre))
                {
                    printf("El nombre debe estar compuesto solo por letras.");
                    break;
                }

                if(!getStringNumeros("\nIngrese edad: \n",auxE))
                {
                    printf("La edad debe estar compuesta solo por numeros");
                    break;
                }

                auxEdad=atoi(auxE);
                if(!validaRango(auxEdad,0,120))
                {
                    printf("La edad se encuentra fuera de rango.\n");
                    break;
                }

                if(!getStringNumeros("\nIngrese DNI: \n",auxD))
                {
                    printf("El DNI deber ser solo numeros: ");
                    break;
                }


                auxDNI=atoi(auxD);
                if(!validaRango(auxDNI,12000000,99999999))
                {
                    printf("El DNI ingresado se encuentra fuera de rango.\n");
                    break;
                }


                if(buscarPorDNI(arrayP,Q,auxDNI)!= -1)
                {
                    printf("\n El DNI ya existe. \n");
                    break;
                }

                strcpy(arrayP[indicarLugarLibre].nombre,auxNombre);
                arrayP[indicarLugarLibre].dni=auxDNI;
                arrayP[indicarLugarLibre].edad=auxEdad;
                arrayP[indicarLugarLibre].estado= 1;
                flag=1;

                if(arrayP[indicarLugarLibre].edad < 18)
                {
                      hasta18++;
                }

                else if(arrayP[indicarLugarLibre].edad >= 18 && arrayP[indicarLugarLibre].edad < 35)
                {
                      de19a35++;
                }

                else if(arrayP[indicarLugarLibre].edad >= 35)
                {
                      mayorDe35++;
                }


                system("cls");
                break;
            case 2:
                system("cls");
                if(buscar(arrayP,Q,1)== -1)
                {
                    printf("\nPrimero debe ingrear usuarios!!\n");
                    break;
                }

                if(!getStringNumeros("Ingrese el DNI de usario a dar de baja: ",auxD))
                {
                    printf("El DNI deber poseer solo numeros: ");
                    break;
                }

                auxDNI=atoi(auxD);
                if(!validaRango(auxDNI,12000000,99999999))
                {
                    printf("El DNI ingresado se encuentra fuera de rango.\n");
                    break;
                }

                indicarResultadoBusqueda=buscarPorDNI(arrayP,Q,auxDNI);

                if(indicarResultadoBusqueda == -1)
                {
                    printf("No se encuentra ese Usuario!\n");
                    break;
                }
                printf("\nSe ha eliminado el usuario DNI: %d Nombre: %s\n", arrayP[indicarResultadoBusqueda].dni, arrayP[indicarResultadoBusqueda].nombre);
                if(arrayP[indicarLugarLibre].edad < 18)
                {
                      hasta18--;
                }

                else if(arrayP[indicarLugarLibre].edad >= 18 && arrayP[indicarLugarLibre].edad < 35)
                {
                      de19a35--;
                }

                else if(arrayP[indicarLugarLibre].edad >= 35)
                {
                      mayorDe35--;
                }
                arrayP[indicarResultadoBusqueda].estado=0;
                break;

            case 3:
                system("cls");
                if(buscar(arrayP,Q,1)== -1)
                {
                    printf("\nPrimero debe ingrear usuarios!!\n");
                    break;
                }

                if(!getStringNumeros("Ingrese el DNI del usuario a modificar: ",auxD))
                {
                    printf("El DNI deber poseer solo numeros: ");
                    break;
                }

                auxDNI=atoi(auxD);
                if(!validaRango(auxDNI,12000000,99999999))
                {
                    printf("El DNI ingresado se encuentra fuera de rango.\n");
                    break;
                }


                indicarResultadoBusqueda=buscarPorDNI(arrayP,Q,auxDNI);
                if(indicarResultadoBusqueda == -1)
                {
                    printf("No se encuentra ese DNI!\n");
                    break;
                }

                if(!getStringLetras("Ingrese nombre: ",auxNombre))
                {
                    printf("El nombre debe estar compuesto solo por letras.");
                    break;
                }

                if(!getStringNumeros("\nIngrese edad: \n",auxE))
                {
                    printf("La edad debe estar compuesta solo por numeros");
                    break;
                }

                auxEdad=atoi(auxE);
                if(!validaRango(auxEdad,0,120))
                {
                    printf("La edad se encuentra fuera de rango.\n");
                    break;
                }


                if(!getStringNumeros("\nIngrese nuevo DNI: \n",auxD))
                {
                    printf("El DNI deber ser solo numeros: ");
                    break;
                }

                auxDNI=atoi(auxD);
                if(!validaRango(auxDNI,12000000,99999999))
                {
                    printf("El DNI ingresado se encuentra fuera de rango.\n");
                    break;
                }

                strcpy(arrayP[indicarResultadoBusqueda].nombre,auxNombre);
                arrayP[indicarResultadoBusqueda].edad=auxEdad;
                arrayP[indicarResultadoBusqueda].dni=atoi(auxD);
                break;
            case 4:
                system("cls");
                if(buscar(arrayP,Q,1)== -1)
                {
                    printf("\nPrimero debe ingrear usuarios!!\n");
                    break;
                }

                printf("\n - Listado Alfabetico- \n\n");
                int j;

                for(i=0;i<Q -1; i++)
                {
                    for(j=i;j<Q;j++)
                    {
                        if(arrayP[i].estado != 0)
                        {
                            if(stricmp(arrayP[i].nombre,arrayP[j].nombre)>0)
                            {
                                    arrayAuxiliar=arrayP[i];
                                    arrayP[i]=arrayP[j];
                                    arrayP[j]=arrayAuxiliar;
                            }
                        }
                    }

                }

                for(i=0;i<Q; i++)
                {
                    if(arrayP[i].estado == 1)
                    {
                        printf("Nombre: %s  DNI: %d\n",arrayP[i].nombre,arrayP[i].dni);
                    }
                }

                break;
            case 5:
                system("cls");
                if(buscar(arrayP,Q,1)== -1)
                {
                    printf("\nPrimero debe ingrear usuarios!!\n");
                    break;
                }

                if(hasta18 >= de19a35 && hasta18 >= mayorDe35)
                {
                    mayor = hasta18;
                }

                else if(de19a35 >= hasta18 && de19a35 >= mayorDe35)
                {
                    mayor = de19a35;
                }

                else
                {
                    mayor = mayorDe35;
                }


                for(i=mayor; i>0; i--){
                    if(i<10){
                        printf("%02d|",i);
                    }
                    else
                        printf("%02d|",i);

                    if(i<= hasta18){
                        printf("*");
                    }
                    if(i<= de19a35){
                        flag=1;
                        printf("\t*");
                    }
                    if(i<= mayorDe35){
                if(flag==0)
                    printf("\t\t*");
                if(flag==1)
                    printf("\t*");

                    }
                    printf("\n");
                }
                printf("--+-----------------");
                printf("\n  |<18\t19-35\t>35");
                printf("\n   %d\t%d\t%d", hasta18, de19a35, mayorDe35);
                printf("\n\n");






                break;
        }
   }

    return 0;
}