Título: [C++] Reordenar vector dinámico de objetos Publicado por: Rockmore en 16 Marzo 2011, 19:34 pm Saludos. Liado ando con un gestor de agenda, en el que he de reordenar por nombre los contactos cada vez que añado uno nuevo. Por supuesto, pensé en la burbuja, pero, a pesar de que compila sin problemas, no reordena nada. He aquí mi código:
Código ¿Dónde está el fallo? Título: Re: [C++] Reordenar vector dinámico de objetos Publicado por: Akai en 16 Marzo 2011, 20:05 pm Falta código para entender completamente lo que estás haciendo, pero básicamente creo que es esto:
Código
No puedes comparar "nombres" de esa forma, C++ es potente, pero no hace magia. Puedes comparar enteros, floats, carácteres, booleanos entre sí, pero no tipos compuestos, estructuras, vectores, u objetos de una clase. Para tu caso, las cadenas se comparan con strcmp (http://cplusplus.com/reference/clibrary/cstring/strcmp/). Si usas strings (http://cplusplus.com/reference/string/string/), lo puedes hacer con string.compare() (http://cplusplus.com/reference/string/string/compare/). Opciones: 1)comparas utilizando la función o clase y método dichos arriba. 2) sobrecargas el operador > para tu clase Contacto para que realice la comparación de lo dicho en la opción 1 (si te ves con ánimo, para ampliar te irá bien) o implementarte tu propio método para comparar cadenas(Mejor no te compliques la vida, mira la opción 1). Título: Re: [C++] Reordenar vector dinámico de objetos Publicado por: Rockmore en 17 Marzo 2011, 19:05 pm Bueno, después de darle mil vueltas logré encontrar los dos fallos que había, como siempre, tonterías, pero que hacen que te vuelvas loco.
Para empezar, el símbolo > funciona, el tema es que el booleano centinela no estaba inicializado, por tanto, no entraba en el bucle de ordenación. Por otro lado, el bucle interno empezaba en j=0, cuando debía hacerlo en j=1. El código resultante del método es el siguiente. Código De todos modos, gracias por el aporte. Lo tendré en cuenta para futuros programas, que se avecinan chungos. ;) |