jueves, 15 de noviembre de 2012

Realice un programa que maneja la información de 10 alumnos

Realice un programa que maneja la información de 10 alumnos. Los datos a
manejar son nombre, nombre de la asignatura y 4 notas acumulativas. Calcular
y mostrar el promedio y la suma de las notas de un alumno en particular.



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

const int tam=10;
const int tam_cad=50;
const int cant_unidades=4;

class datos
{
    private:
    char nombre[tam_cad];
    char materia[tam_cad];
    float notas[cant_unidades];
    float prom;

    public:
    datos(){};
    datos(char [], char [], float []);
    void mostrar();
    friend void leer(datos [], int &, char [], char [], float []);
    friend void promedio(datos [], int &, int &);
    friend int buscar(datos [], int &, char []);
};

int menu();

int main()
{
    int cont=0, opc, indice;
    char nom[tam_cad], asignatura[tam_cad];
    float notas_acum[cant_unidades];
    datos estudiante[tam];

    do{
        opc=menu();

        switch(opc)
        {
            case 1:
            {
                leer(estudiante, cont, nom, asignatura, notas_acum);
                system("cls");
                break;
            }

            case 2:
            {
                cout<<"\n\n\t Indique nombre a buscar: ";
                cin.getline(nom, tam_cad);
                system("cls");

                indice=buscar(estudiante, cont, nom);
                promedio(estudiante, cont, indice);
                estudiante[indice].mostrar();

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

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

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

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

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

int menu()
{
    int opc;

    cout<<"\n\n\t 1.- Leer alumnos"<<endl;
    cout<<"\t 2.- Mostrar promedio"<<endl;
    cout<<"\t 3.- Salir"<<endl;
    cout<<"\t indique opcion: ";
    cin>>opc;

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

    return opc;
}

datos::datos(char nom[tam_cad], char asignatura[tam_cad], float notas_acum[cant_unidades])
{
    strcpy(nombre, nom);
    strcpy(materia, asignatura);
    for(int i=0; i<cant_unidades; i++)
    {
        notas[i]=notas_acum[i];
    }
}

void datos::mostrar()
{
    cout<<"\n\n\t Nombre: "<<nombre<<endl;
    cout<<"\t Materia: "<<materia<<endl;
    cout<<"\t Promedio: "<<prom<<endl;
}

void leer(datos estudiante[tam], int &cont, char nom[tam_cad], char asignatura[tam_cad], float notas_acum[cant_unidades])
{
    cout<<"\n\n\t Nombre: ";
    cin.getline(nom, tam_cad);
    cout<<"\t Materia: ";
    cin.getline(asignatura, tam_cad);

    for(int i=0; i<cant_unidades; i++)
    {
        cout<<"\t Nota "<<(i+1)<<" : ";
        cin>>notas_acum[i];
    }

    datos temp(nom, asignatura, notas_acum);
    estudiante[cont]=temp;
    cont++;
}

void promedio(datos estudiante[tam], int &cont, int &indice)
{
    float prom_notas=0;

    for(int i=0; i<cant_unidades; i++)
    {
        prom_notas+=estudiante[indice].notas[i];
    }

    estudiante[indice].prom=(prom_notas/cant_unidades);
}

int buscar(datos estudiante[tam], int &cont, char nom[tam_cad])
{
    int indice;

    for(int i=0; i<cont; i++)
    {
        if(strcmp(estudiante[i].nombre, nom)==0)
        {
            indice=i;
            break;
        }
    }

    return indice;
}

Descargar Código

0 comentarios:

Publicar un comentario