[C con Clase] Ayuda con estructuras y búsqueda!.

David Gonzalez H davidgh en etb.net.co
Mie Abr 25 05:00:09 CEST 2007


Hola a todos!.

Me hice este pequeño snippet de código para una tarea de la U, el uso es 
asi: Se ingresa el estado, código y nota del alumno usando estructuras y un 
arreglo para almacenar n records, luego se muestran en pantalla los dats 
introducidos y se muetra la mayor nota y el código del ealumno que la 
obtuvo. Pero ahora el profesor nos pide que ordenenomos a los estudiantes 
por código, o por nota

La cosa es que ni siguiendo el _gran_ ;-) curso de C Con Clase he podido 
entender muy bien, o mejor implementar los algorimos de ordenamiento, aqui 
os pego el programa para ver si algno me puede dar una mano con el modo de 
hacer lo de ordenamiento.

Gracias:

**** inicio ****

#include <cstdio>
#include <cstdlib>
#include <iostream>
#include <conio2.h>

using namespace std;

typedef unsigned short int USHINT; //Para ahorrar carreta

struct es{              //Declaracion del tipo de estructura
    USHINT id;          //Contador para los registros introducidos
    char estado;        //variables miembro
    int codigo;
    double nota;
}es={0,'a',0,0.0};

USHINT ELEM=3;

int main(int argc, char *argv[], char *env[]){
    clrscr();
    struct es tabla[ELEM];  //Instancia un arreglo del tipo
                            //estructura es
    //USHINT TAM=sizeof(tabla)/sizeof(tabla[0]);
    double may = 0.0;       //La nota mayor
    USHINT pos = 0, num = 0;//La posicion de la mejor nota
    textcolor(6);
    cout << "\n\n\n\t\t PROGRAMA PARA GUARDAR LAS NOTAS DE\n";
    cout << "\t\t LOS ESTUDIANTES DE DE PROGRAMACION BASICA\n\n\n\n";

    //Captura los datos guardandolos en el arreglo
    for(int i=0; i<ELEM; i++){
        textcolor(i+1);
        tabla[i].id=i;
        cout << "\n\t REGISTRO NUMERO "<<i+1<<endl;
        cout << "\t Ingrese el estado del alumno (a/i): ";
        cin >> tabla[i].estado;
        cout << "\t Ingrese el codigo del alumno: 20071020";
        cin >> tabla[i].codigo;
        cout << "\t Ingrese la nota del alumno: ";
        cin >> tabla[i].nota;
        num += 1;
    }
    //Muestra los datos iterando el arreglo
    textcolor(6);
    cout << "\n\t REGSITRO DE LOS ALUMNOS" <<endl;
    for(int i=0; i<ELEM; i++){
        textcolor(i+2);
        cout << "\n\t ALUMNO "<< i+1 <<endl;
        cout << "\n\t El estado del alumno es: "
             << tabla[i].estado <<endl;
        cout << "\t Codigo del alumno: 200710200"
             << tabla[i].codigo <<endl;
        cout << "\t Nota del alumno : <"
             << tabla[i].nota << ">" <<endl;
    }
    //Itera el arreglo y muestra la nota mayor
    for(int i=0; i<ELEM; i++){
        if(tabla[i].nota > may){
            may = tabla[i].nota;
            pos = tabla[i].codigo;
        }
    }
    textcolor(8);
    cout << "\n\t\t\t Se ingresaron: " << num << " alumnos\n\n";
    textcolor(13);
    cout << "\t\t\t La nota mayor es: <" << may << ">"<<endl
         << "\t\t\t Y la obtuvo el codigo: 200710200"<< pos << endl;
    getch();
    textcolor(0);
    return 0;
}

**** FIN ****

PS:
Perdonen mi modo chapucero de programar, peor estoy en primero :'-(

Mil gracias!.

---
DAVID GONZALEZ H.
Ingeniería de Sistemas
Universidad Distrital
GNU/Linux
Administracion de redes y servidores 




Más información sobre la lista de distribución Cconclase