elhacker.net cabecera Bienvenido(a), Visitante. Por favor Ingresar o Registrarse
¿Perdiste tu email de activación?.

 

 


Tema destacado: Rompecabezas de Bitcoin, Medio millón USD en premios


+  Foro de elhacker.net
|-+  Programación
| |-+  Programación C/C++ (Moderadores: Eternal Idol, Littlehorse, K-YreX)
| | |-+  como ordenar 3 palabras alfabeticamente
0 Usuarios y 1 Visitante están viendo este tema.
Páginas: [1] 2 3 Ir Abajo Respuesta Imprimir
Autor Tema: como ordenar 3 palabras alfabeticamente  (Leído 24,157 veces)
fernandoprog1

Desconectado Desconectado

Mensajes: 29


Ver Perfil
como ordenar 3 palabras alfabeticamente
« en: 9 Junio 2015, 15:44 pm »

/*Este programa escribe dos palabras introducidas por el usuario por orden alfabético.*/

 
Código
  1. #include <stdlib.h>
  2. #include <string.h>
  3. #include <stdio.h>
  4.  
  5. int main()
  6. {
  7.  
  8. char pal1[20], pal2[20];
  9.  
  10. printf(“escriba una palabra:);
  11. gets(pal1);
  12. printf(“\n Escriba otra palabra:);
  13. gets(pal2);
  14.  
  15. printf(“\n Las palabras ordenadas alfabeticamente son: \n”);
  16.  
  17. if(strcmp (pal1, pal2)<0){
  18. //strcmp compara lexicográficamente dos cadenas.
  19. //si pal1<pal2 devuelve un número negativo.
  20. //si pal1>pal2 devuelve un numero positivo.
  21. //si pal1=pal2 devuelve 0.
  22.  
  23. printf(%s\n”, pal1);
  24. printf(%s\n”, pal2); }
  25.  
  26. else {
  27. printf(%s\n”, pal2);
  28. printf(%s\n”, pal1); }
  29.  
  30. printf(“\n\n”);
  31. system(“PAUSE”);
  32. return 0;
  33. }
  34.  

como logro ordenar 3 palabras alfabéticamente nesecito ayuda=)


En línea

engel lex
Moderador Global
***
Desconectado Desconectado

Mensajes: 15.514



Ver Perfil
Re: como ordenar 3 palabras alfabeticamente
« Respuesta #1 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


En línea

El problema con la sociedad actualmente radica en que todos creen que tienen el derecho de tener una opinión, y que esa opinión sea validada por todos, cuando lo correcto es que todos tengan derecho a una opinión, siempre y cuando esa opinión pueda ser ignorada, cuestionada, e incluso ser sujeta a burla, particularmente cuando no tiene sentido alguno.
fernandoprog1

Desconectado Desconectado

Mensajes: 29


Ver Perfil
Re: como ordenar 3 palabras alfabeticamente
« Respuesta #2 en: 9 Junio 2015, 16:00 pm »

que tipo de método puedo aplicar ??
En línea

user-marcos

Desconectado Desconectado

Mensajes: 159


Ver Perfil
Re: como ordenar 3 palabras alfabeticamente
« Respuesta #3 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
  1. if(pal1[i] > pal2[i])
  2.  
En línea

engel lex
Moderador Global
***
Desconectado Desconectado

Mensajes: 15.514



Ver Perfil
Re: como ordenar 3 palabras alfabeticamente
« Respuesta #4 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
  1.  
  2. int i, j, n;
  3. char palabras[3][20];
  4. char intercambio[20];
  5. /*
  6. aqui el resto del codigo, leer entradas, etc
  7. */
  8. for(i=0;i<3-1;i++)
  9.   for(j=0;j<3-1-i;j++)
  10.   {
  11. n=strcmp (palabras[j], palabras[j+1]);//se comparan
  12. if(n > 0)
  13. {
  14. strcpy (intercambio,palabras[j]);//coloco el valor en un espacio temporal
  15. strcpy (palabras[j],palabras[j+1]);//copio el otro al valor ya salvado
  16. strcpy (palabras[j+1],intercambio);//coloco el primero en el final
  17. }
  18.   }

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
« Última modificación: 9 Junio 2015, 17:53 pm por engel lex » En línea

El problema con la sociedad actualmente radica en que todos creen que tienen el derecho de tener una opinión, y que esa opinión sea validada por todos, cuando lo correcto es que todos tengan derecho a una opinión, siempre y cuando esa opinión pueda ser ignorada, cuestionada, e incluso ser sujeta a burla, particularmente cuando no tiene sentido alguno.
Regexp

Desconectado Desconectado

Mensajes: 22



Ver Perfil
Re: como ordenar 3 palabras alfabeticamente
« Respuesta #5 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
  1. palabras[x][y]=tolower( palabras[x][y] )

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
« Última modificación: 10 Junio 2015, 01:21 am por Regexp » En línea

No todo el que deambula está perdido
fernandoprog1

Desconectado Desconectado

Mensajes: 29


Ver Perfil
Re: como ordenar 3 palabras alfabeticamente
« Respuesta #6 en: 10 Junio 2015, 01:36 am »

Código
  1. #include <stdio.h>
  2. #include <stdlib.h>
  3.  
  4. int main()
  5. {
  6.  
  7.  
  8. char pal1[20], pal2[20], pal3[20];
  9.  
  10. printf("ingrese una palabra:");
  11. gets(pal1);
  12. printf("ingrese la segunda palabra:");
  13. gets(pal2);
  14. printf("ingrese la tercera palabra:");
  15. gets(pal3);
  16. ("\n Las palabras ordenadas alfabeticamente son: \n");
  17.  
  18. if(strcmp (pal1, pal2)<0)
  19. {
  20.    printf("%s\n", pal1);
  21.    printf("%s\n", pal2);
  22. }
  23. else
  24. {
  25.    printf("%s\n", pal2);
  26.    printf("%s\n", pal1);
  27. }
  28. if(strcmp (pal1, pal3)<0)
  29. {
  30.    printf("%s\n", pal1);
  31.    printf("%s\n", pal3);
  32. }
  33.  
  34. else
  35. {
  36.    printf("%s\n", pal3);
  37.    printf("%s\n", pal1);
  38. }
  39.  
  40. if(strcmp (pal2, pal1)<0)
  41. {
  42.    printf("%s\n", pal2);
  43.    printf("%s\n", pal1);
  44. }
  45.  
  46. else
  47. {
  48.    printf("%s\n", pal1);
  49.    printf("%s\n", pal2);
  50. }
  51.  
  52.  
  53. if(strcmp (pal2, pal3)<0)
  54. {
  55.    printf("%s\n", pal2);
  56.    printf("%s\n", pal3);
  57. }
  58. else
  59.      {
  60.    printf("%s\n", pal3);
  61.    printf("%s\n", pal2);
  62. }
  63.  
  64. if(strcmp (pal3, pal2)<0)
  65. {
  66.    printf("%s\n", pal3);
  67.    printf("%s\n", pal2);
  68. }
  69. else{
  70.    printf("%s\n", pal2);
  71.    printf("%s\n", pal3);
  72. }
  73.  
  74. if(strcmp (pal3, pal1)<0)
  75. {
  76.    printf("%s\n", pal3);
  77.    printf("%s\n", pal1);
  78. }
  79. else{
  80.    printf("%s\n", pal1);
  81.    printf("%s\n", pal3);
  82. }
  83.  
  84. printf("\n\n");
  85.  
  86. system("PAUSE");
  87.  
  88. return 0;
  89. }
  90.  



nesecito hacer las comparaciones alfabéticas de esta manera pero no logro poder hacerla !
« Última modificación: 10 Junio 2015, 01:42 am por fernandoprog1 » En línea

Regexp

Desconectado Desconectado

Mensajes: 22



Ver Perfil
Re: como ordenar 3 palabras alfabeticamente
« Respuesta #7 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
En línea

No todo el que deambula está perdido
engel lex
Moderador Global
***
Desconectado Desconectado

Mensajes: 15.514



Ver Perfil
Re: como ordenar 3 palabras alfabeticamente
« Respuesta #8 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
En línea

El problema con la sociedad actualmente radica en que todos creen que tienen el derecho de tener una opinión, y que esa opinión sea validada por todos, cuando lo correcto es que todos tengan derecho a una opinión, siempre y cuando esa opinión pueda ser ignorada, cuestionada, e incluso ser sujeta a burla, particularmente cuando no tiene sentido alguno.
fernandoprog1

Desconectado Desconectado

Mensajes: 29


Ver Perfil
Re: como ordenar 3 palabras alfabeticamente
« Respuesta #9 en: 10 Junio 2015, 02:42 am »

si el profesor me dijo que tengo que hacer varios if.
En línea

Páginas: [1] 2 3 Ir Arriba Respuesta Imprimir 

Ir a:  

Mensajes similares
Asunto Iniciado por Respuestas Vistas Último mensaje
Ordenar alfabeticamente en php con numeros « 1 2 »
PHP
dominioswww 10 8,268 Último mensaje 17 Junio 2008, 03:02 am
por WHK
Como ordenar alfabéticamente palabras en C++
Programación C/C++
loko5755 4 22,424 Último mensaje 5 Mayo 2014, 12:04 pm
por eferion
Ordenar una lista alfabeticamente
Programación C/C++
maferavagar 1 5,009 Último mensaje 17 Mayo 2015, 14:56 pm
por ivancea96
¿como ordenar alfabeticamente array bidimensional?
Programación C/C++
Drewermerc 3 3,308 Último mensaje 21 Abril 2016, 18:05 pm
por Drewermerc
Nadie me explica como ordenar alfabeticamente mas de tres palabras
Programación C/C++
JulianDronger 1 1,899 Último mensaje 23 Febrero 2019, 01:44 am
por MCKSys Argentina
WAP2 - Aviso Legal - Powered by SMF 1.1.21 | SMF © 2006-2008, Simple Machines