miércoles, 14 de noviembre de 2012

El departamento de personal de la UDO tiene registros del nombre, sexo, sueldo y edad de cada uno de los profesores adscritos a la Universidad.

El departamento de personal de la UDO tiene registros del nombre, sexo,
sueldo y edad de cada uno de los profesores adscritos a la Universidad. Escriba
un programa que calcule e imprima los siguientes datos:

  • Nombre del profesor más joven del grupo
  • Nombre del profesor con mayor sueldo.
  • Edad promedio del grupo de profesores.
  • Número de profesores con edad mayor al promedio.
  • Lista de todos los profesores de sexo masculino.
  • Lista de todos los profesores.
Nota: Se manejará un máximo de 50 profesores.


#include<iostream>
#include<cstdlib>
#include<cstring>
using namespace std;

const int tam=50;
const int tam_cad=50;
const int tam_sex=10;
const int tam_tlf=12;

class profesor
{
    private:
    char nombre[tam_cad];
    char sexo[tam_sex];
    float sueldo;
    int edad;

    public:
    void mostrar();
    profesor(){};
    profesor(char [], char [], float &, int &);
    friend void leer(profesor [], int &, char [], char [], float &, int &);
    friend int profesor_joven(profesor [], int &);
    friend int profesor_mejor_sueldo(profesor [], int &);
    friend int prom_edad(profesor [], int &);
    friend void mostrar_prof_edad_mayor_prom(profesor [], int &);
    friend void mostrar_prof_sex_masculino(profesor [], int &);
};

int menu();

int main()
{
    int opc, edad_p, cont=0, indice;
    char nom[tam_cad], sex[tam_sex];
    float salario;
    profesor datos[tam];

    do{
        opc=menu();

        switch(opc)
        {
            case 1:
            {
                leer(datos, cont, nom, sex, salario, edad_p);
                system("cls");
                break;
            }

            case 2:
            {
                indice=profesor_joven(datos, cont);
                cout<<"\n\n\t El profesor mas joven es: "<<endl;
                datos[indice].mostrar();

                cin.get();
                system("cls");
                break;
            }

            case 3:
            {
                indice=profesor_mejor_sueldo(datos, cont);
                cout<<"\n\n\t El profesor con mejor sueldo es: "<<endl;
                datos[indice].mostrar();

                cin.get();
                system("cls");
                break;
            }

            case 4:
            {
                cout<<"\n\n\t La edad promedio es: "<<prom_edad(datos, cont)<<endl;

                cin.get();
                system("cls");
                break;
            }

            case 5:
            {
                cout<<"\n\n\t Profesores con edad mayor al promedio: "<<endl;
                mostrar_prof_edad_mayor_prom(datos, cont);

                cin.get();
                system("cls");
                break;
            }

            case 6:
            {
                cout<<"\n\n\t Profesores con sexo masculino: "<<endl;
                mostrar_prof_sex_masculino(datos, cont);

                cin.get();
                system("cls");
                break;
            }

            case 7:
            {
                cout<<"\n\n\t Profesores: "<<endl;
                for(int i=0; i<cont; i++)
                {
                    datos[i].mostrar();
                }

                cin.get();
                system("cls");
                break;
            }

            case 8:
            {
                exit(0);
                break;
            }

            default:
            {
                cout<<"\n\t opcion invalida"<<endl;

                cin.get();
                system("cls");
                break;
            }
        }
    }while(opc!=8);

    cin.get(); cin.get();
    return 0;
}

profesor::profesor(char nom[tam_cad], char sex[tam_sex], float &salario, int &edad_p)
{
    strcpy(nombre, nom);
    strcpy(sexo, sex);
    sueldo=salario;
    edad=edad_p;
}

void profesor::mostrar()
{
    cout<<"\n\n\t Nombre: "<<nombre<<endl;
    cout<<"\t Sexo: "<<sexo<<endl;;
    cout<<"\t Sueldo: "<<sueldo<<endl;
    cout<<"\t Edad: "<<edad<<endl;
}

int menu()
{
    int opc;

    cout<<"\n\n\t 1.- Leer profesores"<<endl;
    cout<<"\t 2.- Profesor mas joven del grupo"<<endl;
    cout<<"\t 3.- Profesor con mejor sueldo"<<endl;
    cout<<"\t 4.- Edad promedio"<<endl;
    cout<<"\t 5.- Profesores con edad mayor al promedio"<<endl;
    cout<<"\t 6.- Listar profesores con sexo masculino"<<endl;
    cout<<"\t 7.- Listar todos los profesores"<<endl;
    cout<<"\t 8.- Salir"<<endl;
    cout<<"\t indique opcion: ";
    cin>>opc;

    cin.ignore();
    system("cls");

    return opc;
}

void leer(profesor datos[tam], int &cont, char nom[tam_cad], char sex[tam_sex], float &salario, int &edad_p)
{
    cout<<"\n\n\t Nombre: ";
    cin.getline(nom, tam_cad);
    cout<<"\t Sexo: ";
    cin.getline(sex, tam_sex);
    cout<<"\t Sueldo: ";
    cin>>salario;
    cout<<"\t Edad: ";
    cin>>edad_p;

    profesor temp(nom, sex, salario, edad_p);
    datos[cont]=temp;
    cont++;
}

int profesor_joven(profesor datos[tam], int &cont)
{
    int indice, i=0, edad=0;

    for(i=0; i<cont; i++)
    {
        if(datos[i].edad>edad)
        {
            edad=datos[i].edad;
        }
    }

     for(i=0; i<cont; i++)
    {
        if(datos[i].edad<=edad)
        {
            edad=datos[i].edad;
            indice=i;
        }
    }

    return indice;
}

int profesor_mejor_sueldo(profesor datos[tam], int &cont)
{
    int indice, i=0;
    float salario=0;

    for(i=0; i<cont; i++)
    {
        if(datos[i].sueldo>salario)
        {
            salario=datos[i].sueldo;
            indice=i;
        }
    }

    return indice;
}

int prom_edad(profesor datos[tam], int &cont)
{
    int sum=0, edad_prom;

    for(int i=0; i<cont; i++)
    {
        sum+=datos[i].edad;
    }

    edad_prom=sum/cont;

    return edad_prom;
}

void mostrar_prof_edad_mayor_prom(profesor datos[tam], int &cont)
{
    int edad_prom, i=0;

    edad_prom=prom_edad(datos, cont);

    for(i=0; i<cont; i++)
    {
        if(datos[i].edad>edad_prom)
        {
            datos[i].mostrar();
        }
    }
}

void mostrar_prof_sex_masculino(profesor datos[tam], int &cont)
{
    int i;

    for(i=0; i<cont; i++)
    {
        if(strcmp(datos[i].sexo,"masculino")==0)
        {
            datos[i].mostrar();
        }
    }
}

Descargar Código

0 comentarios:

Publicar un comentario