Foro de elhacker.net

Programación => Programación C/C++ => Mensaje iniciado por: mari2diaz en 18 Febrero 2023, 20:18 pm



Título: error en cola prioritaria c++
Publicado por: mari2diaz en 18 Febrero 2023, 20:18 pm
muestra la primera lista_t con solo en primer nodo, luego la segunda igual y la tercera tambien igual y ahi el programa no continua y se cierra solo, no encuentro donde esta el problema

Código
  1. void SistemaInscripcion::insertarPrioridad_2(Alumno* alumno){
  2.    Alumno *actual = cabeza_a, *anterior = nullptr;
  3.    while(actual && compararPorNivelPromedio(alumno, actual)){
  4.        anterior = actual;
  5.        actual = actual->siguiente;
  6.    }
  7.    alumno->siguiente = actual;
  8.    if(anterior)
  9.        anterior->siguiente = alumno;
  10.    else
  11.        cabeza_a = alumno;
  12. }
  13.  
  14. void SistemaInscripcion::insertarPrioridad_3(Alumno* alumno){
  15.    Alumno *actual = cabeza_a, *anterior = nullptr;
  16.    while(actual && compararPorCreditosPromedio(alumno, actual)){
  17.        anterior = actual;
  18.        actual = actual->siguiente;
  19.    }
  20.    alumno->siguiente = actual;
  21.    if(anterior)
  22.        anterior->siguiente = alumno;
  23.    else
  24.        cabeza_a = alumno;
  25. }
  26.  
  27. void SistemaInscripcion::eliminarLista(){
  28. while(cabeza_a){
  29. Alumno* eliminar = cabeza_a;
  30. cabeza_a = cabeza_a->siguiente;
  31. delete eliminar;
  32. }
  33. }
  34.  
  35. void SistemaInscripcion::asignarCupos(SistemaInscripcion* lista_a){
  36. for(Materia* m = cabeza_m; m != nullptr; m = m->siguiente){
  37. SistemaInscripcion lista_t;
  38. for(Alumno* a = lista_a->cabeza_a; a != nullptr; a = a->siguiente){
  39. for(auto it : a->materias){
  40. if(it == m->codigo_materia){
  41. if(m->prioridad == 1){
  42. lista_t.insertarPrioridad_1(a);
  43. }
  44. if(m->prioridad == 2){
  45. lista_t.insertarPrioridad_2(a);
  46. }
  47. if(m->prioridad == 3){
  48. lista_t.insertarPrioridad_3(a);
  49. }
  50. }
  51. }
  52. }
  53. lista_t.imprimirListaAlumnos();
  54. lista_t.eliminarLista();
  55. }
  56. }


Título: Re: error en cola prioritaria c++
Publicado por: K-YreX en 19 Febrero 2023, 01:40 am
Hola @mari2diaz,
Echando un vistazo al código que has pegado, quedan bastantes incógnitas como para saber qué está ocurriendo :huh:
No podemos ver las implementaciones de varias funciones como `insertarPrioridad_1()` o `imprimirListaAlumnos()` ni los atributos de la clase,
y más importante, no sabemos con qué datos estás ejecutando el programa para poder ver por dónde debería ir la ejecución.

Si el código no es excesivamente grande, podrías darnos un poco más de información y si lo fuese,
intenta crear un ejemplo más pequeño pero que tengamos una visión completa y así ver qué está fallando.  ;D