Ejercicio en C++: Proyecto de consola para registrar las personas que se inscriben en un equipo

Crear un proyecto de consola para registrar las personas que se inscriben en un equipo formado por personas de distintas edades, los datos que se piden para la inscripción son:

  • Nombre
  • Edad
  • Sexo

Al final de la carga, se desea conocer la siguiente información que debe ser mostrada por pantalla.

  • Edad del Mayor participante
  • Nombre del mayor participante
  • Edad del menor participante
  • Nombre del menor participante
  • Promedio de Edades
  • Cantidad de edades menores a 20 años
  • Cantidad de edades menores o iguales que 20 años
  • Cantidad de Hombres
  • Cantidad de Mujeres
  • Cantidad de Personas en el equipo

Código


    #include <iostream>
    #include <string>
    #include <vector>
    #include <iterator>

    using namespace std;

    void printBanner()
    {
        cout <<"                                                                                                             " << endl;
        cout <<"    8 8888888888       ,o888888o.     8 8888      88  8 8888 8 888888888o       ,o888888o.       d888888o.   " << endl;
        cout <<"    8 8888          . 8888     `88.   8 8888      88  8 8888 8 8888    `88.  . 8888     `88.   .`8888:' `88. " << endl;
        cout <<"    8 8888         ,8 8888       `8b  8 8888      88  8 8888 8 8888     `88 ,8 8888       `8b  8.`8888.   Y8 " << endl;
        cout <<"    8 8888         88 8888        `8b 8 8888      88  8 8888 8 8888     ,88 88 8888        `8b `8.`8888.     " << endl;
        cout <<"    8 888888888888 88 8888         88 8 8888      88  8 8888 8 8888.   ,88' 88 8888         88  `8.`8888.    " << endl;
        cout <<"    8 8888         88 8888     `8. 88 8 8888      88  8 8888 8 888888888P'  88 8888         88   `8.`8888.   " << endl;
        cout <<"    8 8888         88 8888      `8,8P 8 8888      88  8 8888 8 8888         88 8888        ,8P    `8.`8888.  " << endl;
        cout <<"    8 8888         `8 8888       ;8P  ` 8888     ,8P  8 8888 8 8888         `8 8888       ,8P 8b   `8.`8888. " << endl;
        cout <<"    8 8888          ` 8888     ,88'8.   8888   ,d8P   8 8888 8 8888          ` 8888     ,88'  `8b.  ;8.`8888 " << endl;
        cout <<"    8 888888888888     `8888888P'  `8.   `Y88888P'    8 8888 8 8888             `8888888P'     `Y8888P ,88P' " << endl;
        cout <<"                                                                                                             " << endl;
    }

    struct persona
    {
        string nombre;
        int edad;
        char sexo;
    };

    int main()
    {
        // variables del programa
        int opcionSeleccionada;
        int nPersona = -1;
        vector<persona> listaDePersonas;

        // Con este ciclo do .. while hacenmos que el programa se repita de manera infinta hasta que el usuario indique lo contrario
        do
        {
            system("cls");
            printBanner();      // Se imprime el banner que dice 'equipos'

            cout << "\tMenu de Opciones:"               << endl;
            cout << "\t0. Salir"                        << endl;
            cout << "\t1. Agregar Persona"              << endl;
            cout << "\t2. Impimir Lista de Personas"    << endl;
            cout << "\t3. Ver estadisticas"             << endl;

            cout << ">> ";
            cin >> opcionSeleccionada;

            switch( opcionSeleccionada )
            {
                case 0:
                    cout << ">> Programa Terminado." << endl;
                    break;

                case 1:
                    listaDePersonas.push_back( persona() );
                    nPersona++;

                    cout << endl;
                    cout << "\tRegistro de nueva Persona." << endl;
                    cout << "\tNombre: ";
                    getchar();
                    getline(cin, listaDePersonas[nPersona].nombre);
                    cout << "\tEdad: ";
                    cin >> listaDePersonas[nPersona].edad;
                    cout << "\tSexo (Solo puede ser M o F): ";
                    cin >> listaDePersonas[nPersona].sexo;
                    break;

                case 2:
                    cout << "=================== Listado de Personas ===================" << endl;
                    for(auto it = listaDePersonas.begin(); it != listaDePersonas.end(); it++)
                    {
                        cout << "Nombre: " << it->nombre    << endl;
                        cout << "Edad:   " << it->edad      << endl;
                        cout << "Sexo:   " << it->sexo      << endl;
                    }
                    cout << "===========================================================" << endl;
                    cout << "Presiona una tecla para continuar ...";
                    getchar();getchar();
                    break;
                case 3:
                    string nombreMayorParticipante;
                    string nombreMenorParticipante;
                    int sumaDeEdades = 0;
                    int edadDelMayorParticipante = 0;
                    int edadDelMenorParticipante = 100;
                    int promedioDeEdades = 0;
                    int menoresDe20 = 0;
                    int mayoresOigualQue20 = 0;
                    int hombres = 0, mujeres = 0;

                    // En este for recorremos el vector y analizamos los datos para obtener lo que se nos pide
                    for(auto persona = listaDePersonas.begin(); persona != listaDePersonas.end(); persona++)
                    {
                        sumaDeEdades += persona->edad;

                        if(persona->edad > edadDelMayorParticipante)
                        {
                            edadDelMayorParticipante = persona->edad;
                            nombreMayorParticipante = persona->nombre;
                        }

                        if(persona->edad < edadDelMenorParticipante)
                        {
                            edadDelMenorParticipante = persona->edad;
                            nombreMenorParticipante = persona->nombre;
                        }

                        if(persona->sexo == 'M')
                            hombres++;

                        if(persona->sexo == 'F')
                            mujeres++;

                        if( persona->edad >= 20)
                            mayoresOigualQue20++;

                        if(persona->edad < 20)
                            menoresDe20++;
                    }
                    promedioDeEdades = sumaDeEdades / nPersona;

                    cout << "======================= Estadisticas ======================" << endl;
                    cout << "Edad del Mayor participante: " << edadDelMayorParticipante << endl;
                    cout << "Nombre del Mayor Participante: " << nombreMayorParticipante << endl;
                    cout << "===========================================================" << endl;
                    cout << "Edad del Menor participante: " << edadDelMenorParticipante << endl;
                    cout << "Nombre del Menor Participante: " << nombreMenorParticipante << endl;
                    cout << "===========================================================" << endl;
                    cout << "Promedio de Edades: " << promedioDeEdades << endl;
                    cout << "Cantidad Menor a 20: " << menoresDe20 << endl;
                    cout << "Cantidad >= que 20: " << mayoresOigualQue20 << endl;
                    cout << "===========================================================" << endl;
                    cout << "Cantidad de Hombre: " << hombres << endl;
                    cout << "Cantidad de Mujeres: " << mujeres << endl;
                    cout << "Cantidad de Personas en el equipo: " << (nPersona+1) << endl;
                    cout << "===========================================================" << endl;
                    cout << "Presiona una tecla para continuar ...";
                    getchar();getchar();
                    break;

            }

        }while( opcionSeleccionada != 0 );

        return 0;
    }


Comentarios