Club Delphi  
    FTP   CCD     Buscar   Trucos   Trabajo   Foros

Retroceder   Foros Club Delphi > Otros entornos y lenguajes > C++ Builder
Registrarse FAQ Miembros Calendario Guía de estilo Temas de Hoy

Respuesta
 
Herramientas Buscar en Tema Desplegado
  #1  
Antiguo 26-09-2010
richi1010 richi1010 is offline
Registrado
 
Registrado: sep 2010
Posts: 4
Poder: 0
richi1010 Va por buen camino
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();
}
Responder Con Cita
  #2  
Antiguo 26-09-2010
Avatar de Ñuño Martínez
Ñuño Martínez Ñuño Martínez is offline
Moderador
 
Registrado: jul 2006
Ubicación: Ciudad Catedral, Españistán
Posts: 6.000
Poder: 25
Ñuño Martínez Tiene un aura espectacularÑuño Martínez Tiene un aura espectacular
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!|MinGRo Game Engine
Responder Con Cita
  #3  
Antiguo 26-09-2010
Avatar de Lord Delfos
Lord Delfos Lord Delfos is offline
Miembro
 
Registrado: ene 2008
Ubicación: Tandil, Argentina
Posts: 558
Poder: 17
Lord Delfos Va por buen camino
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?
Responder Con Cita
  #4  
Antiguo 26-09-2010
richi1010 richi1010 is offline
Registrado
 
Registrado: sep 2010
Posts: 4
Poder: 0
richi1010 Va por buen camino
Wink

Ya intente los dos casos que me dijeron, pero en ambos me da error, no se que hacer , pero gracias por responder.
Responder Con Cita
  #5  
Antiguo 26-09-2010
Avatar de Lord Delfos
Lord Delfos Lord Delfos is offline
Miembro
 
Registrado: ene 2008
Ubicación: Tandil, Argentina
Posts: 558
Poder: 17
Lord Delfos Va por buen camino
Amigo richi1010, para que podamos ayudarte pregunto: ¿Cuál es el error que da? ¿En qué linea?

Saludongos.
Responder Con Cita
  #6  
Antiguo 26-09-2010
richi1010 richi1010 is offline
Registrado
 
Registrado: sep 2010
Posts: 4
Poder: 0
richi1010 Va por buen camino
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
Responder Con Cita
  #7  
Antiguo 27-09-2010
Avatar de escafandra
[escafandra] escafandra is offline
Miembro Premium
 
Registrado: nov 2007
Posts: 2.197
Poder: 20
escafandra Tiene un aura espectacularescafandra Tiene un aura espectacular
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;}
Saludos.
Responder Con Cita
  #8  
Antiguo 28-09-2010
richi1010 richi1010 is offline
Registrado
 
Registrado: sep 2010
Posts: 4
Poder: 0
richi1010 Va por buen camino
Muchas gracias por su ayuda, solo me queda una última duda, como le pongo el nulo a mis cadenas??????
Gracias
Responder Con Cita
  #9  
Antiguo 28-09-2010
Avatar de escafandra
[escafandra] escafandra is offline
Miembro Premium
 
Registrado: nov 2007
Posts: 2.197
Poder: 20
escafandra Tiene un aura espectacularescafandra Tiene un aura espectacular
Cita:
Empezado por richi1010 Ver Mensaje
...como le pongo el nulo a mis cadenas??????
¿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;
Saludos.
Responder Con Cita
Respuesta



Normas de Publicación
no Puedes crear nuevos temas
no Puedes responder a temas
no Puedes adjuntar archivos
no Puedes editar tus mensajes

El código vB está habilitado
Las caritas están habilitado
Código [IMG] está habilitado
Código HTML está deshabilitado
Saltar a Foro

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


La franja horaria es GMT +2. Ahora son las 07:22:25.


Powered by vBulletin® Version 3.6.8
Copyright ©2000 - 2024, Jelsoft Enterprises Ltd.
Traducción al castellano por el equipo de moderadores del Club Delphi
Copyright 1996-2007 Club Delphi