Foros del Web » Programación para mayores de 30 ;) » C/C++ »

No veo el error

Estas en el tema de No veo el error en el foro de C/C++ en Foros del Web. Gente a ver si alguien me encuentra el error la verdad no lo encontramos, suponemos que es de indicies pero lo ejecutamos y nos devuelve ...
  #1 (permalink)  
Antiguo 19/04/2009, 18:24
 
Fecha de Ingreso: marzo-2008
Mensajes: 96
Antigüedad: 16 años, 1 mes
Puntos: 8
No veo el error

Gente a ver si alguien me encuentra el error la verdad no lo encontramos, suponemos que es de indicies pero lo ejecutamos y nos devuelve nada el programa.

Es una parte del codigo donde ordenamos una palabra.

Uso Visual c++.

Código:
int t=strlen(palabra)-1;
	for(int i=0;i<t-1;i++)
	{
		for(int j=i;j<t-1;j++)
		{
			if(toupper(palabra[i])>toupper(palabra[j]))
			{
				aux=palabra[i];
				palabra[i]=palabra[j];
				palabra[j]=aux;
			}
		}
	}
Gracias desde ya.

Matias
__________________
EXPERIMENTO KARMATICO TERMINADO POR LA FUERZA -.-

Disculpas si a alguien le molesto o le dio trabajo extra

Última edición por Mattiass; 19/04/2009 a las 19:03 Razón: El t1 fue error al copiar
  #2 (permalink)  
Antiguo 19/04/2009, 18:38
 
Fecha de Ingreso: diciembre-2004
Mensajes: 163
Antigüedad: 19 años, 4 meses
Puntos: 2
Respuesta: No veo el error

mmm, no se si escribiste bien el código pero en el ordenamiento utilizas t1 y arriba defines la variable como t, pudiera ser eso, yo lo haria asi:

Código c:
Ver original
  1. int t=strlen(palabra)-1;
  2.  
  3. for (int i=1; i<t; i++){
  4.         for(int j=0 ; j<t - 1; j++) {
  5.              if (toupper(palabra[j]) > toupper(palabra[j+1])){
  6.                   aux = palabra[j];
  7.                   palabra[j] = palabra[j+1];
  8.                    palabra[j+1] = aux;
  9.                 }
  10.         }
  11. }

espero te sirva, saludos.
  #3 (permalink)  
Antiguo 19/04/2009, 19:01
 
Fecha de Ingreso: marzo-2008
Mensajes: 96
Antigüedad: 16 años, 1 mes
Puntos: 8
Respuesta: No veo el error

Sigue sin funcionar es algo raro al comentar las dos lineas:

Código:
int t=strlen(palabra)-1;
 
for (int i=1; i<t; i++){
        for(int j=0 ; j<t - 1; j++) {
             if (toupper(palabra[j]) > toupper(palabra[j+1])){
                  aux = palabra[j];
                 // palabra[j] = palabra[j+1];
                   //palabra[j+1] = aux;
                }
        }
}
ahi anda pero no ordena es algun problema ahi, si alguien lo ve que me chifle -

Gracias
__________________
EXPERIMENTO KARMATICO TERMINADO POR LA FUERZA -.-

Disculpas si a alguien le molesto o le dio trabajo extra
  #4 (permalink)  
Antiguo 19/04/2009, 19:15
 
Fecha de Ingreso: diciembre-2004
Mensajes: 163
Antigüedad: 19 años, 4 meses
Puntos: 2
Respuesta: No veo el error

mmm, que extraño. Mira este código a ver si te sirve de algo, no se si es lo que andas buscando:

Código c:
Ver original
  1. #include <stdio.h>
  2. #include <string.h>
  3. #include <ctype.h>
  4.  
  5. int main()
  6. {
  7.     char palabra[] = "dcreasf";
  8.     char aux;
  9.     int i,j,t;
  10.  
  11.     t=strlen(palabra);
  12.  
  13.     printf("La palabra desordenada es %s\n",palabra);
  14.  
  15.     for (int i=1; i<t; i++){
  16.         for(int j=0 ; j<t - 1; j++) {
  17.             if (toupper(palabra[j]) > toupper(palabra[j+1])){
  18.                 aux = palabra[j];
  19.                 palabra[j] = palabra[j+1];
  20.                 palabra[j+1] = aux;
  21.             }
  22.         }
  23.     }
  24.     printf("La palabra ordenada es %s",palabra);
  25.     return 1;
  26. }

lo escribi en C y compilado con GNU GCC compiler.

es algo asi lo que quieres???
  #5 (permalink)  
Antiguo 19/04/2009, 19:53
 
Fecha de Ingreso: marzo-2008
Mensajes: 96
Antigüedad: 16 años, 1 mes
Puntos: 8
Respuesta: No veo el error

Bue raro este me compia afuera del programa pero no cuando lo meto en mi codigo que raro...

El tema que vos pones char palabra[]="kkkk";
yo tengo que pasarlo como char *palabra; y ahi es cuando no me anda
__________________
EXPERIMENTO KARMATICO TERMINADO POR LA FUERZA -.-

Disculpas si a alguien le molesto o le dio trabajo extra

Última edición por Mattiass; 19/04/2009 a las 20:37
  #6 (permalink)  
Antiguo 20/04/2009, 22:41
 
Fecha de Ingreso: diciembre-2004
Mensajes: 163
Antigüedad: 19 años, 4 meses
Puntos: 2
Respuesta: No veo el error

que extraño, podrias poner mas de tu código para ver bien cual es el problema, quizas te estes equivocando en el manejo del puntero o algo.

Si palabra es un puntero a char y esta apuntando correctamente a alguna dirección de memoria deberia entonces funcionar pero tienes que cuidar que el puntero palabra se pueda recorrer como un array o sea que puedas hacer puntero[1] o puntero[2] y que puntero+1 o puntero+2 apunten a cosas correctas, por ejemplo:

Código c:
Ver original
  1. #include <stdio.h>
  2. #include <stdlib.h>
  3. #include <string.h>
  4. #include <ctype.h>
  5. #define N 10
  6.  
  7. int main()
  8. {
  9.     char *palabra;
  10.     char aux;
  11.     int i,j,t;
  12.  
  13.     palabra = (char *)malloc(sizeof(char)*N);
  14.  
  15.     gets(palabra);
  16.  
  17.     t=strlen(palabra);
  18.  
  19.     printf("La palabra desordenada es %s\n",palabra);
  20.  
  21.     for (int i=1; i<t; i++)
  22.     {
  23.         for (int j=0 ; j<t - 1; j++)
  24.         {
  25.             if (toupper(palabra[j]) > toupper(palabra[j+1]))
  26.             {
  27.                 aux = palabra[j];
  28.                 palabra[j] = palabra[j+1];
  29.                 palabra[j+1] = aux;
  30.             }
  31.         }
  32.     }
  33.     printf("La palabra ordenada es %s",palabra);
  34.  
  35.     free(palabra);
  36.  
  37.     return 1;
  38. }
Atención: Estás leyendo un tema que no tiene actividad desde hace más de 6 MESES, te recomendamos abrir un Nuevo tema en lugar de responder al actual.
Respuesta




La zona horaria es GMT -6. Ahora son las 13:24.