Autor
|
Tema: como ordenar 3 palabras alfabeticamente (Leído 24,150 veces)
|
Regexp
Desconectado
Mensajes: 22
|
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(N 2), 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*N 2+B*N+C puede aproximarse simplemente a N 2. Como dirían por ahí, hay infinitos más grandes que otros. http://www.c.conclase.net/orden/?cap=burbujaDe ser N! sería totalmente imposible de usar , dado que N! es aún mayor que la exponencial desde un cierto N. N! >= 2 N, 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<=e N, para toda N>=1, prueba por crecimiento y decrecimiento de las funciones. El caso N 2 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
|
|
« Última modificación: 10 Junio 2015, 03:04 am por Regexp »
|
En línea
|
No todo el que deambula está perdido
|
|
|
engel lex
|
Sorry, tienes razón, confundí conceptos
|
|
|
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.
|
|
|
engel lex
|
responde por el foro, para eso el tema està abierto -.- 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? #include <stdio.h> #include <string.h> #include <stdlib.h> int main() { char pal1[20], pal2[20], pal3[20]; printf("ingrese una palabra:"); gets(pal1); printf("ingrese la segunda palabra:"); gets(pal2); printf("ingrese tercera palabra"); gets(pal3); ("\n Las palabras ordenadas alfabeticamente son: \n"); if(strcmp (pal1,pal3)<0) //(pal1, pal2)<0) { pal1>pal3 & pal3>pal1; printf ("%s\n",pal1, pal3); } else{ pal3<pal1 & pal1<pal3; printf ("%s\n",pal3, pal1); } if(strcmp (pal1,pal2)<0) //(pal1, pal2)<0) { pal1>pal2 & pal1>pal2; printf ("%s\n",pal1, pal2); } else{ pal2<pal1 & pal1<pal2; printf ("%s\n",pal2, pal1); } return 0; }
cuando dije 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 printf("%s, %s, %s\n",pal1 ,pal2 ,pal3 ); }
y claramente los casos no los entendiste... son 6 posibles casos p1>p2>p3 p1>p3>p2 p2>p1>p3 p2>p3>p1 p3>p2>p1 p3>p1>p2 entonces los expreso como lo que se convierte en código como
espero se entienda
|
|
|
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
Mensajes: 29
|
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 ???? #include <stdio.h> #include <string.h> #include <stdlib.h> int main() { char pal1[20], pal2[20], pal3[20]; printf("\nINGRESE PRIMER PALABRA: \n"); printf("\nINGRESE SEGUNDA PALABRA: \n"); printf(" \nINGRESE TERCERA PALABRA: \n"); ("\n LAS PALABRAS ORDENADAS ALFABETICAMENTE SON: \n"); printf("%s, %s, %s\n",pal1 ,pal2 ,pal3 ); } printf("%s, %s, %s\n",pal1 ,pal3 ,pal2 ); } printf("%s, %s, %s\n",pal2 ,pal1 ,pal3 ); } printf("%s, %s, %s\n",pal2 ,pal3 ,pal1 ); } printf("%s, %s, %s\n",pal3 ,pal2 ,pal1 ); } printf("%s, %s, %s\n",pal3 ,pal1 ,pal2 ); } return 0; }
|
|
|
En línea
|
|
|
|
engel lex
|
si, sería así siendo ahora 24 casos si no me equivoco
|
|
|
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
Mensajes: 29
|
Gracias engel lex, ahora para no tener que usar tantos if que puedo hacer ?
|
|
|
En línea
|
|
|
|
engel lex
|
lee mi segunda respuesta (la que tiene código)
|
|
|
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
Mensajes: 29
|
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 ? #include <stdlib.h> #include <string.h> #include <stdio.h> int main() { int i, j, n; char palabras[3][20]; char intercambio[20]; printf("ingrese primer palabra"); printf("ingrese segunda palabra"); printf("ingresse tercera palabra"); for(i=0;i<3-1;i++) for(j=0;j<3-1-i;j++) { n =strcmp (palabras [j ], palabras [j +1]);//se comparan if(n > 0) { strcpy (intercambio ,palabras [j ]);//coloco el valor en un espacio temporal strcpy (palabras [j ],palabras [j +1]);//copio el otro al valor ya salvado strcpy (palabras [j +1],intercambio );//coloco el primero en el final } } }
|
|
« Última modificación: 12 Junio 2015, 00:45 am por fernandoprog1 »
|
En línea
|
|
|
|
тαптяα
Desconectado
Mensajes: 1.151
Sic utere tuo ut alienum non laeda
|
Te faltan los printfs..
printf("%s, %s, %s\n",pal3,pal1,pal2);
|
|
|
En línea
|
|
|
|
engel lex
|
reccomiendo revisar un tutorial sobre arrays (o arreglos) en c++ printf("ingrese primer palabra"); gets(palabras[0]);
|
|
|
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.
|
|
|
|
Mensajes similares |
|
Asunto |
Iniciado por |
Respuestas |
Vistas |
Último mensaje |
|
|
Ordenar alfabeticamente en php con numeros
« 1 2 »
PHP
|
dominioswww
|
10
|
8,265
|
17 Junio 2008, 03:02 am
por WHK
|
|
|
Como ordenar alfabéticamente palabras en C++
Programación C/C++
|
loko5755
|
4
|
22,421
|
5 Mayo 2014, 12:04 pm
por eferion
|
|
|
Ordenar una lista alfabeticamente
Programación C/C++
|
maferavagar
|
1
|
5,007
|
17 Mayo 2015, 14:56 pm
por ivancea96
|
|
|
¿como ordenar alfabeticamente array bidimensional?
Programación C/C++
|
Drewermerc
|
3
|
3,304
|
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,896
|
23 Febrero 2019, 01:44 am
por MCKSys Argentina
|
|