Título: como ordenar 3 palabras alfabeticamente Publicado por: fernandoprog1 en 9 Junio 2015, 15:44 pm /*Este programa escribe dos palabras introducidas por el usuario por orden alfabético.*/
Código
como logro ordenar 3 palabras alfabéticamente nesecito ayuda=) Título: Re: como ordenar 3 palabras alfabeticamente Publicado por: engel lex en 9 Junio 2015, 15:46 pm puedes usar cualquier metodo de ordenamiento... te recomiendo ordenamiento por burbuja, seguro en wiki consigues mucha info :P
Título: Re: como ordenar 3 palabras alfabeticamente Publicado por: fernandoprog1 en 9 Junio 2015, 16:00 pm que tipo de método puedo aplicar ??
Título: Re: como ordenar 3 palabras alfabeticamente Publicado por: user-marcos en 9 Junio 2015, 16:22 pm Las letras se pueden comparar igual que los números, de hecho son números que corresponden a una tabla ascii.
Por lo tanto puedes comprar letra por letra: Código
Título: Re: como ordenar 3 palabras alfabeticamente Publicado por: engel lex en 9 Junio 2015, 17:48 pm sería util usar un array para esto, si no, es muy trabajoso
se hace de la siguiente forma, colocaré una sección de codigo sin más, pruebala y si tierre errores corrigela; Código
el funcionamiento es más o menos esto, si ves el gif hasta el final entiendes el por qué esos 2 ciclos en 3 -1 (largo -1) de la wiki (http://upload.wikimedia.org/wikipedia/commons/0/06/Bubble-sort.gif) Título: Re: como ordenar 3 palabras alfabeticamente Publicado por: Regexp en 10 Junio 2015, 01:18 am Tal como dice engel lex, con cualquier algoritmo de ordenamiento sirve porque las letras están en orden alfabético en la tabla Ascii, en otras palabras 'a' < 'x' y así.
Si quieres verlo con strcmp puedes, dado que n=strcmp( str1, str2 ) devuelve: n=0, si las cadenas de caracteres son iguales n>0, si el primer carácter en el que las cadenas son diferentes tiene mayor valor en la tabla ascii en str1 n<0, si el primer carácter en el que las cadenas son diferentes tiene mayor valor en str2 Por ejemplo si str1="abcz"; str2="abcx", el primer caracter en el que difieren es en el 4 (contando desde 1), y como bien sabemos 'z'>'x', entonces strcmp(str1, str2)>0 Un problema interesante es si las cadenas difieren justamente en una mayúscula o minúscula, por ejemplo "ABCD" y "ABCa", te dará un problema, dado que strcmp devolvería negativo, causando que el algoritmo tenga problemas en el ordenamiento. La solución mas sencilla a esto sería convertir la cadena completa en todo a mayúsculas o todo a minúsculas, recorrer cada letra de cada palabra con la función toupper, o tolower, es decir: Código De resto te podría recomendar el quick sort, pero a efectos de tres palabras la diferencia en tiempo de ejecución sería mínima, casi imposible de percibir. También puedes hacer tu función strcmp específica para este problema, no es más que tratar una cadena de caracteres como un numero representado en la base "cantidad de caracteres admitidos en las cadenas", 255 con la tabla Ascii básica o 26 sólo con letras. Cada espacio del arreglo viene siendo la cifra correspondiente, donde str[0] es la cifra de mayor importancia (la primera letra). Viéndolo así, simplemente basta con extrapolar el algoritmo para determinar si un numero es mayor que otro que aprendiste en la escuela a algo un poco más general. Un numero es menor que otro si el primero se encuentra a la izquierda del segundo en la recta numérica. Espero sea de ayuda. Saludos Título: Re: como ordenar 3 palabras alfabeticamente Publicado por: fernandoprog1 en 10 Junio 2015, 01:36 am Código
nesecito hacer las comparaciones alfabéticas de esta manera pero no logro poder hacerla ! Título: Re: como ordenar 3 palabras alfabeticamente Publicado por: Regexp en 10 Junio 2015, 02:11 am ¿Estás obligado a hacerlo sin arreglos?
Los algoritmos de ordenamiento NO son un problema trivial, han sido estudiados ampliamente y son algo bastante complejos. El algoritmo de burbuja es el más "intuitivo" y sencillo de implementar. Si te fijas, son dos for anidados, cada uno recorre la cantidad de elementos a ordenar, es decir 3x3, conforme el numero de palabras crece digamos a N, la cantidad de iteraciones es N2. Es decir, tendrías que hacer... MUY cuidadosamente 9 condicionales para este caso. Eso lo convierte en una solución muy tediosa de hacer. No te lo recomiendo. A menos que estés obligado porque así te lo han pedido tus profesores (o así dice el libro/ejercicio), hazlo con arreglos. Saludos Título: Re: como ordenar 3 palabras alfabeticamente Publicado por: engel lex en 10 Junio 2015, 02:22 am Sigo apoyando lo que dice Regexp pero corrijo algo burbuja no es n2, es n! Ya que cada ciclo mayor resuelve uno :p
Silo quieres hacer a fuerza bruta, son 6 casos En pseudo código.... Código: Si(p1>p2 y p2>p3){ imprimir p1, p2, p3 } Si(p1>p3 y p3>p2){ Imprimir p1, p3, p2 } Etc Título: Re: como ordenar 3 palabras alfabeticamente Publicado por: fernandoprog1 en 10 Junio 2015, 02:42 am si el profesor me dijo que tengo que hacer varios if.
Título: Re: como ordenar 3 palabras alfabeticamente Publicado por: Regexp en 10 Junio 2015, 03:02 am Sigo apoyando lo que dice Regexp pero corrijo algo burbuja no es n2, es n! Ya que cada ciclo mayor resuelve uno :p [...] Sino mal recuerdo es O(N2), o al menos, en el peor de todos los casos. El caso "medio" es un poco menor, pero para valores muy grandes de N, en una ecuación de segundo grado A*N2+B*N+C puede aproximarse simplemente a N2. Como dirían por ahí, hay infinitos más grandes que otros. http://www.c.conclase.net/orden/?cap=burbuja (http://www.c.conclase.net/orden/?cap=burbuja) De ser N! sería totalmente imposible de usar :rolleyes:, dado que N! es aún mayor que la exponencial desde un cierto N. N! >= 2N, para toda N>=4, prueba por inducción Cuando lo que se busca es que los algoritmos tiendan a tener complejidad logarítmica, dado que log(N)<=N<=eN, para toda N>=1, prueba por crecimiento y decrecimiento de las funciones. El caso N2 es especial, para valores pequeños de N, no es problemático... en cuanto crece.. el algoritmo no escala. En cuanto a hacerlo por condicionales... la mejor manera sería como ha dicho nuestro compañero engel lex, por fuerza bruta, en tal caso para N elementos pueden existir N-1 posibles cadenas que vienen después (o antes, dependiendo de la implementación), y así, al ser sólo 3 cadenas de caracteres, tendrías 3*2*1=3!=6 posibles secuencias de cadenas ordenadas. Saludos Título: Re: como ordenar 3 palabras alfabeticamente Publicado por: engel lex en 10 Junio 2015, 03:39 am Sorry, tienes razón, confundí conceptos ;)
Título: Re: como ordenar 3 palabras alfabeticamente Publicado por: engel lex en 11 Junio 2015, 02:15 am responde por el foro, para eso el tema està abierto -.-
Citar no entendí que me quisite decir con ese código yo probe con eso pero no puedo hacer andar la comparación entre las 3, me hace solo 2 comparaciones, puedes ayudarme? Código
cuando dije Código: Si(p1>p2 y p2>p3){ imprimir p1, p2, p3 } p1 > p2 es una comparación de strings, sería strcmp, "y" es comparador binario y es "&&", dejando el código de esta manera Código
y claramente los casos no los entendiste... son 6 posibles casos Código: p1>p2>p3 p1>p3>p2 p2>p1>p3 p2>p3>p1 p3>p2>p1 p3>p1>p2 entonces los expreso como Código: Si(p1>p2 y p2>p3) lo que se convierte en código comoCódigo espero se entienda Título: Re: como ordenar 3 palabras alfabeticamente Publicado por: fernandoprog1 en 11 Junio 2015, 19:07 pm Gracias engel lex, ahora entendí perfectamente! el código que muestro aquie anda perfectamente y compara alfabéticamente 3 palabras, ahora si quiero comprar 4 palabras quedaría algo asi p1>p2>p3>p4 ????
Código
Título: Re: como ordenar 3 palabras alfabeticamente Publicado por: engel lex en 11 Junio 2015, 21:28 pm si, sería así siendo ahora 24 casos si no me equivoco
Título: Re: como ordenar 3 palabras alfabeticamente Publicado por: fernandoprog1 en 11 Junio 2015, 21:50 pm Gracias engel lex, ahora para no tener que usar tantos if que puedo hacer ?
Título: Re: como ordenar 3 palabras alfabeticamente Publicado por: engel lex en 11 Junio 2015, 21:52 pm lee mi segunda respuesta (la que tiene código)
Título: Re: como ordenar 3 palabras alfabeticamente Publicado por: fernandoprog1 en 12 Junio 2015, 00:43 am este es el programa que me mostraste engel lex , ahora una ves que me lo compila me pide los 3 datos pero no me muestra nada, por que pasa eso ?
Código
Título: Re: como ordenar 3 palabras alfabeticamente Publicado por: тαптяα en 12 Junio 2015, 00:57 am Te faltan los printfs..
printf("%s, %s, %s\n",pal3,pal1,pal2); Título: Re: como ordenar 3 palabras alfabeticamente Publicado por: engel lex en 12 Junio 2015, 16:10 pm reccomiendo revisar un tutorial sobre arrays (o arreglos) en c++
Código
Título: Re: como ordenar 3 palabras alfabeticamente Publicado por: fernandoprog1 en 15 Junio 2015, 23:01 pm engel lex no entiendo donde debería poner el printf ((Te faltan los printfs..
printf("%s, %s, %s\n",pal3,pal1,pal2); ? Título: Re: como ordenar 3 palabras alfabeticamente Publicado por: engel lex en 16 Junio 2015, 00:43 am el printf con el primer codigo que expuse debe ser
Código
Título: Re: como ordenar 3 palabras alfabeticamente Publicado por: fernandoprog1 en 16 Junio 2015, 17:13 pm Gracias ! ;)
|