Título: Ayuda con una ordenacion de un array please? :P Publicado por: valeeen en 12 Diciembre 2015, 19:30 pm Buenas amigos! Para clase tengo que ordenar un array alfabeticamente, es un array que se forma a partir de la lectura de un fichero, tiene 4 columnas, la primera es el nombre que es por la que quiero ordenarlo... el caso es que he llegado a esto:
Código: void sortByName(producto productoArray[], int pLength) { Peeeeeero, esto me cambia el nombre de todos los productos por el nombre del que seria el primero ordenado, es decir, si fuera el alfabeto, el array quedaria con todos A A A A A A A A menos el último, que deja la Z. A esta funcion la llamo asi: Código: void sortByName(producto productoArray[], int pLength); ¿Podéis ayudarme? Mil gracias! Título: Re: Ayuda con una ordenacion de un array please? :P Publicado por: MAFUS en 12 Diciembre 2015, 21:23 pm Muy buenas:
Por lo pronto se me ocurre lo siguiente: Hacer una función que compare dos productos. Código
Y finalmente usas la función qsort, de stdlib, para que te ordene ella sola el array. Código Título: Re: Ayuda con una ordenacion de un array please? :P Publicado por: valeeen en 13 Diciembre 2015, 01:36 am Muy buenas: Por lo pronto se me ocurre lo siguiente: Hacer una función que compare dos productos. Código
Y finalmente usas la función qsort, de stdlib, para que te ordene ella sola el array. Código Gracias Mafus por la idea! tengo un problemilla, y es que no se como pasar mi array como parametro a esa funcion que me has dicho jeje. en el productos.h tengo la llamada a la funcion: Código: #include <stdlib.h> y en el productos.cpp tengo la definición en dos partes, primero: Código: int comparar_producto(const void *p1, const void *p2) { y despues: Código: void ordenarProductos(producto productoArray[], int pLength) { Estoy empezando con C++ y está claro que algo estoy haciendo mal jeje. A ver si me podéis ayudar! Gracias! Un saludo Título: Re: Ayuda con una ordenacion de un array please? :P Publicado por: MAFUS en 13 Diciembre 2015, 02:17 am Muy buenas.
Ahora que lo he visto, fallo mio. :-( Siendo productoArray tu array de productos declarado como Código
siendo pLength una constante numérica que marca el tamaño de tu array, la llamada a qsort debe ser así: Código No se si la funcion ordenarProducto debes incluirla obligatoriamente pero no te haría falta porque qsort hace todo el trabajo. Allí donde tengas ordenarProducto pones directamente qsort y tu array se debe ordenar directamente. Título: Re: Ayuda con una ordenacion de un array please? :P Publicado por: valeeen en 13 Diciembre 2015, 02:30 am Muy buenas. Ahora que lo he visto, fallo mio. :-( Siendo productoArray tu array de productos declarado como Código
siendo pLength una constante numérica que marca el tamaño de tu array, la llamada a qsort debe ser así: Código No se si la funcion ordenarProducto debes incluirla obligatoriamente pero no te haría falta porque qsort hace todo el trabajo. Allí donde tengas ordenarProducto pones directamente qsort y tu array se debe ordenar directamente. Ha funciona a la perfección Mafus!! Muchas gracias! Una duda que me queda, en vez de modificar el txt original... ¿Se podría hacer un "cout" de un array temporal ordenado? Para dejar el archivo original intacto. Gracias por la solución! Un saludo! Título: Re: Ayuda con una ordenacion de un array please? :P Publicado por: MAFUS en 13 Diciembre 2015, 02:37 am Muy buenas.
Si a lo que te refieres a no cambiar el archivo, pues sin guardarlo en dicho archivo seguirá desordenado. Si te refieres a seguir teniendo el array original desordenado puedes hacerle una copia y trabajar sobre la copia. Título: Re: Ayuda con una ordenacion de un array please? :P Publicado por: valeeen en 13 Diciembre 2015, 20:01 pm Muy buenas. Si a lo que te refieres a no cambiar el archivo, pues sin guardarlo en dicho archivo seguirá desordenado. Si te refieres a seguir teniendo el array original desordenado puedes hacerle una copia y trabajar sobre la copia. Bueno, lo voy a dejar así al final jeje Gracias por la ayuda Mafus! Saluds |