Método de la burbuja para vectores dinámicos

Piloka
16 de Junio del 2004
Hola, necesito una función para ordenar un vector dinámico. Estaba usando el método de la burbuja pero me da un fallo de segmentación en la función intercambiar. ¿Podéis ayudarme, por favor? Gracias

neo20
16 de Junio del 2004
Hola , un fallo de segmentación normalmente se debe a que accedes a una posicion de memoria incorrecta , puede que un índicie que estes usando se salga de rango , no se en que lenguaje estas programando.
Mira el codigo por lo que te estoy diciendo , si no hay remedio , di en ke lenguaje lo stas haciendo o si no pon el codigo de la parte de intercambiar.
Suerte.

Piloka
16 de Junio del 2004
Pues es en c++. El código es este:

//alumno es esta estructura:
struct alumno{
char *nombre;
int practica1;
int practica2;
int practica3;
double teoria;
};


// La función intercambia es:
void Intercambia(alumno &v1, alumno &v2){
alumno aux;

strcpy(aux.nombre, v1.nombre);
aux.practica1=v1.practica1;
aux.practica2=v1.practica2;
aux.practica3=v1.practica3;
aux.teoria=v1.teoria;

strcpy(v1.nombre, v2.nombre);
v1.practica1=v2.practica1;
v1.practica2=v2.practica2;
v1.practica3=v2.practica3;
v1.teoria=v2.teoria;

strcpy(v2.nombre, aux.nombre);
v2.practica1=aux.practica1;
v2.practica2=aux.practica2;
v2.practica3=aux.practica3;
v2.teoria=aux.teoria;

}



//Por el método de la burbuja
void OrdenaAlumnos(alumno *Lista, int util_alumnos){
bool cambio=true;

for(int izda=0; izda<util_alumnos&&cambio; izda++){
cambio=false;

for(int i=util_alumnos-1; i>izda; i--)
if(strcmp(Lista[i].nombre, Lista[i-1].nombre)<0){
Intercambia(Lista[i], Lista[i-1]);
cambio=true;
}

}

}