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

martes, 13 de noviembre de 2012

Escriba un programa que lea datos de un grupo de personas (nombre, edad, sexo, dirección, teléfono)

Escriba un programa que lea datos de un grupo de personas (nombre, edad, sexo, dirección, teléfono) e indique lo siguiente:
  1.  Persona más joven del grupo.
  2.  Cuántas personas son del sexo femenino y cuántas del sexo masculino.
  3.  Mostrar los datos de todas las personas del grupo que son mayores de edad.

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

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

class personas
{
    private:
    char nombre[tam_cad];
    int edad;
    char sexo[tam_sex];
    char direccion[tam_cad];
    char tlf[tam_tlf];

    public:
    void mostrar();
    friend void leer(personas [], int &, char [], int &, char [], char [], char []);
    friend int menor_edad(personas [], int &);
    friend void mayores_edad(personas [], int &);
    friend void cont_sexo(personas [], int &, int &, int &);
    personas(){};
    personas(char [], int &, char [], char [], char []);
    ~personas();
};

int menu();

int main()
{
    int opc, cont=0, i, indice, cont_masculino=0, cont_femenino=0, edad_t;
    char nombre_t[tam_cad], sexo_t[tam_sex], direccion_t[tam_cad], tlf_t[tam_tlf];
    personas grupo[tam];

    do{
        opc=menu();

        switch(opc)
        {
            case 1:
            {
                leer(grupo, cont, nombre_t, edad_t, sexo_t, direccion_t, tlf_t);

                system("cls");
                break;
            }

            case 2:
            {
                indice=menor_edad(grupo, cont);

                cout<<"\n\n\t la persona mas joven del grupo es: "<<endl;
                grupo[indice].mostrar();

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

            case 3:
            {
                cont_sexo(grupo, cont, cont_masculino, cont_femenino);

                cout<<"\n\n\t la cantidad de mujeres del grupo es: "<<cont_femenino<<endl;
                cout<<"\t la cantidad de hombres del grupo es: "<<cont_masculino<<endl;

                cont_masculino=0;
                cont_femenino=0;

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

            case 4:
            {
                mayores_edad(grupo, cont);

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

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

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

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

        }
    }while(opc!=5);

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

personas::personas(char nombre_t[tam_cad], int &edad_t, char sexo_t[tam_sex], char direccion_t[tam_cad], char tlf_t[tam_tlf])
{
    strcpy(nombre, nombre_t);
    edad=edad_t;
    strcpy(sexo, sexo_t);
    strcpy(direccion, direccion_t);
    strcpy(tlf, tlf_t);
}

personas::~personas()
{

}

void personas::mostrar()
{
    cout<<"\n\t Nombre: "<<nombre<<endl;
    cout<<"\t Edad: "<<edad<<endl;
    cout<<"\t Sexo: "<<sexo<<endl;
    cout<<"\t Direccion: "<<direccion<<endl;
    cout<<"\t Telefono: "<<tlf<<endl;
}

int menu()
{
    int opc;

    cout<<"\n\n\t 1.- Leer personas"<<endl;
    cout<<"\t 2.- Persona mas joven del grupo"<<endl;
    cout<<"\t 3.- Cantidad de hombres y mujeres del grupo"<<endl;
    cout<<"\t 4.- Mostrar mayores de edad"<<endl;
    cout<<"\t 5.- salir"<<endl;
    cout<<"\t indique opcion: ";
    cin>>opc;
    cin.ignore();
    system("cls");

    return opc;
}

void leer(personas grupo[tam], int &cont, char nombre_t[tam_cad], int &edad_t, char sexo_t[tam_sex], char direccion_t[tam_cad], char tlf_t[tam_tlf])
{
    cout<<"\n\n\t Nombre: ";
    cin.getline(nombre_t, tam_cad);
    cout<<"\t Edad: ";
    cin>>edad_t;
    cin.ignore();
    cout<<"\t Sexo: ";
    cin.getline(sexo_t, tam_sex);
    cout<<"\t Direccion: ";
    cin.getline(direccion_t, tam_cad);
    cout<<"\t Telefono: ";
    cin.getline(tlf_t, tam_tlf);

    personas temp(nombre_t, edad_t, sexo_t, direccion_t, tlf_t);
    grupo[cont]=temp;
    cont++;
}

int menor_edad(personas grupo[tam], int &cont)
{
    int indice, i=0, edad=0;

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

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

    return indice;
}

void mayores_edad(personas grupo[tam], int &cont)
{
    for(int i=0; i<cont; i++)
    {
        if(grupo[i].edad>=18)
        {
            grupo[i].mostrar();
        }
    }
}

void cont_sexo(personas grupo[tam], int &cont, int &cont_masculino, int &cont_femenino)
{
    int i;

    for(i=0; i<cont; i++)
    {
        if(strcmp(grupo[i].sexo, "masculino")==0)
        {
            cont_masculino++;
        }
        else
            {
                cont_femenino++;
            }
    }
}

Descargar Código