![]() |
![]() |
| Paypal | 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.
__________________
Proyectos actuales --> Allegro 5 Pascal ¡y Delphi! - BAScript - Multi Language Scriptable Development Environment |
|
#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; |
![]() |
|
|
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 |
|