viernes, 16 de septiembre de 2011

Ordenar por nombre o promedio

Ordena una estructura de 2 diferentes maneras según el tipo de elementos que la componen.


#include "stdafx.h"
#include "iostream"
#include "string"
using namespace std;

struct datos
{
int carnet;
string name;
double promedio;
}*alumno;

void intercambio(int i, int j)
{
datos aux=alumno[i];
alumno[i]=alumno[j];
alumno[j]=aux;
}

void main()
{
int n,modo;

cout<<"Ingrese numero de alumnos: ";cin>>n;

alumno = new datos [n];

for(int i=0;i<n;i++)
{
cout<<endl<<"Nro de carnet:\t";cin>>alumno[i].carnet;
cout<<"Nombre: ";cin>>alumno[i].name;
cout<<"Promedio: ";cin>>alumno[i].promedio;
}

int repeat;


do{
do{
cout<<endl<<endl<<"MODO DE ORDENAMIENTO: (0) Alfabetico; (1) Promedios ";cin>>modo;
}while(modo<0 || modo>1);

for(int i=0;i<n-1;i++)
{
for(int j=i+1;j<n;j++)
{
if(modo)
{
if(alumno[i].promedio<alumno[j].promedio)
intercambio(i,j);
}
else
{
if(alumno[i].name>alumno[j].name)
intercambio(i,j);
}
}
}

cout<<endl<<"Carnet\tNombre\tPromedio"<<endl;

for(int i=0;i<n;i++)
cout<<alumno[i].carnet<<"\t"<<alumno[i].name<<"\t"<<alumno[i].promedio<<endl;

do{
cout<<endl<<"Ordenar de nuevo (1 SI, 0 NO)";cin>>repeat;
}while(repeat<0 || repeat>1);

}while(repeat);
}

No hay comentarios:

Publicar un comentario