Título: Ordenar alfabeticamente Nombres (Struct) Publicado por: Ja_90 en 22 Octubre 2014, 01:51 am Buenas quiero resolver este ejercicio y esto es lo que llevo... Mi duda es en como ordenar alfabeticamente los nombres de los empleados, (Se que puedo hacerlo por el metodo Burbuja y se como funciona este metodo) como comparo los string Naame.....ya que se hacerlo con strcmp pero esto es con cadenas de caracteres char. Ademas como inserto la variable auxiliar sabiendo que es una structura.... MUCHAS GRACIAS POR SUS RESPUESTAS....
Código
Sugerencias sobre el programa, como mejorarlo o simplificarlo si es posible..... PD: Que no sea con vectores ya que todavia no he visto el tema....jejeje estoy de autodidacta y no he llegado alli... ;D ;D ;D ;D Título: Re: Ordenar alfabeticamente Nombres (Struct) Publicado por: rir3760 en 22 Octubre 2014, 03:03 am No veo cual sea el problema ya que puedes copiar las estructuras mediante el operador de asignación y en cuanto a comparar los campos (tipo string) "Naame" de dos estructuras puedes utilizar los operadores relacionales.
Para darte una idea si se quiere verificar si los dos primeros elementos están desordenados e intercambiarlos si es el caso el condicional seria: Código Donde "emp" es el nombre del array de estructuras. Por ultimo si no se desea realizar el intercambio manualmente se puede utilizar la función swap (http://www.cplusplus.com/reference/algorithm/swap/). Un saludo Título: Re: Ordenar alfabeticamente Nombres (Struct) Publicado por: Ja_90 en 22 Octubre 2014, 06:30 am rir3760 Si tenia la idea tal cual me dices pero estaba cometiendo un error...
Estaba colocando en la asignacion de la variable auxiliar asi....aux = people.Naame.....tenia demas el .Naame....ahora bien quisiera saber el porque no se puede hacer esto...No tengo claro ese concepto, si me puedes explicar por favor te lo agradeceria. La funcion qued asi: Código
Título: Re: Ordenar alfabeticamente Nombres (Struct) Publicado por: eferion en 22 Octubre 2014, 13:12 pm Opción 1: ordenamiento explícito
Nos aprovechamos de la función "sort" definida en la librería algorithm. A esta función necesitamos pasarle una función que defina la forma en la que han de ser ordenados los elementos. Código
Opción 2: sobrecarga de operadores Si sobrecargamos el operador '<' de la clase "Employees", podemos ahorrarnos la función "SortData" definida en el ejemplo anterior: Código
También se puede sobrecargar el operador fuera de la estructura... en ese caso es necesario que la función sea binaria (2 operadores): Código
Otras consideraciones: * En C++ no hace falta usar "struct" cada vez que quieres crear un nuevo elemento de tipo "Employees". * En C++ es mejor usar "const" a "define". El motivo es que "define" no indica el tipo de valor ( entero, decimal, ... ) y eso puede dar lugar a resultados no esperados en el código. * El parámetro "i" que pasas con tanta alegría en las 3 funciones te lo puedes ahorrar... se pueden declarar variables sin miedo dentro de las funciones. * Salvo causas de fuerza mayor, yo sustituiría los usos de "char*" en la dirección por "std::string". Título: Re: Ordenar alfabeticamente Nombres (Struct) Publicado por: Ja_90 en 22 Octubre 2014, 18:23 pm Muchas gracias eferion tendre encuenta cada situacion que mencionaste....voy a buscar un poco mas de informacion respecto a la funcion 'sort' para seguir implementandola y sobre la opcion de sobrecargar los operadore, creo que es muy util en estos casos....y respecto a el uso de struct ya lo sabia solo que lo hago simplemente para tener claro e identificar la estructura mas facil en el codigo...igual afecta si lo pongo o no??, tengo entendido que no... Igualmente muchas gracias. ;-) ;D ;D
Título: Re: Ordenar alfabeticamente Nombres (Struct) Publicado por: eferion en 22 Octubre 2014, 18:32 pm No afecta... pero tampoco aporta nada... un parámetro de una función o una variable que declares únicamente pueden ser tipos nativos (int, float, double...), estructuras, clases y/o templates (que para el caso es como si fuesen clases)... los tipos nativos son conocidos por todos, luego si no es un tipo básico está claro que vas a a tratar con un objeto.
Título: Re: Ordenar alfabeticamente Nombres (Struct) Publicado por: Ja_90 en 22 Octubre 2014, 19:10 pm Bueno si tienes toda la razon, igual para identificar en el codigo puedo poner un simple comentario, creo que seria mas adecuado.... Nuevamente gracias por tus consejos, creo que estos pequenos detalles ayudan mucho.
|