FTP | CCD | Buscar | Trucos | Trabajo | Foros |
#1
|
|||
|
|||
Ordenamiento
Necesito orden cadenas por el método de la burbuja, tengo este códogo pero no las ordena, me podrian decir que puedo hacer?? de antemano gracias.
Código:
#include <stdio.h> #include <string.h> #include <stdlib.h> #include <conio.h> #include <time.h> #define MAXCAD 5 #define LONGCAD 20 char cArr[MAXCAD][LONGCAD]; int iContaPasada, iContaComp; int i, j; char cArrAux[LONGCAD]; void main(void) { srand (time(NULL)); for(i=0; i<MAXCAD; i++) { for(j=0; j<LONGCAD; j++) cArr[i][j]=(rand()%9); } for(i=0; i<MAXCAD; i++) { printf("\n"); for(j=0; j<LONGCAD; j++) printf("%d",cArr[i][j]); } for (iContaPasada=0; iContaPasada<MAXCAD-1; iContaPasada++) { for(iContaComp=0; iContaComp<LONGCAD-1; iContaComp++) { if (strcmp(cArr[iContaComp],cArr[iContaComp+1])>0) { strcpy(cArrAux,cArr[iContaComp]); strcpy(cArr[iContaComp],cArr[iContaComp+1]); strcpy(cArr[iContaComp+1],cArrAux); } } } printf("\n"); for(i=0; i<MAXCAD; i++) { printf("\n"); for(j=0; j<LONGCAD; j++) printf("%d",cArr[i][j]); } getch(); } |
#2
|
||||
|
||||
No lo he comprobado, pero creo que la condición de los bucles de ordenación no está bien del todo. Creo que sobra el "menos uno", pero no estoy seguro.
|
#3
|
||||
|
||||
Bueno, no tengo C++ instalado, pero me parece que la condición del segundo for está mal.
Debería ser < MAXCAD - 1 en ambos casos. ¿O me estoy equivocando? |
#4
|
|||
|
|||
Ya intente los dos casos que me dijeron, pero en ambos me da error, no se que hacer , pero gracias por responder.
|
#5
|
||||
|
||||
Amigo richi1010, para que podamos ayudarte pregunto: ¿Cuál es el error que da? ¿En qué linea?
Saludongos. |
#6
|
|||
|
|||
el problema es que a la hora de imprimir los datos, no salen ordenados y me da oras cadenas diferentes a las que genero al principi, y supongo que es en los strcmp
|
#7
|
||||
|
||||
Código:
char** Nombres; // Cargamos en Nombres las cadenas... // Nombres[0] = "Cadena1" //....... // Ordenar char *c; int n, m = 1; // Ordena por orden alfabético for(m=1;m;) for(n=0,m=0; n<NNombres-1; n++) if(stricmp(Nombres[n], Nombres[n+1])>0 && *Nombres[n+1]) { c=Nombres[n]; Nombres[n]=Nombres[n+1]; Nombres[n+1]=c; m=1;} |
#8
|
|||
|
|||
Muchas gracias por su ayuda, solo me queda una última duda, como le pongo el nulo a mis cadenas??????
Gracias |
#9
|
||||
|
||||
¿Te refieres al nulo finnal de cadena?
Se pone sólo cuando las declaras o usas las funciones de tratamiento de cadena strcpy, strcat, wsprintf.... Siempre lo puedes poner a mano considerando que una cadena es un array: Código:
cadena[n] = 0; |
Herramientas | Buscar en Tema |
Desplegado | |
|
|
Temas Similares | ||||
Tema | Autor | Foro | Respuestas | Último mensaje |
Ordenamiento en un Select | Angel_Luz | JAVA | 0 | 04-05-2006 17:07:32 |
Ordenamiento confuso | brandolin | Firebird e Interbase | 16 | 24-04-2004 23:05:24 |
Actualización de ordenamiento con ADO | ¥0n1 | Conexión con bases de datos | 4 | 09-01-2004 18:17:43 |
Ordenamiento | GIVO | Conexión con bases de datos | 4 | 13-08-2003 18:19:29 |
Ordenamiento en un DBGrid | Cronos | Varios | 1 | 26-05-2003 21:25:29 |
|