Foro de elhacker.net

Programación => Programación C/C++ => Mensaje iniciado por: Siquillote en 26 Diciembre 2010, 17:15 pm



Título: [PROBLEMA] Concatenar variables. [SOLUCIONADO]
Publicado por: Siquillote en 26 Diciembre 2010, 17:15 pm
¡Hola! este es mi primer mensaje de ayuda y espero que me ayuden. Soy nuevo en esto de C y C++ pero ya he hecho una simple calculadora y tal.

He decidido crear un prorama que sirve para generar códigos (No diré para que por si acaso) y resulta que a la hora de hacer un rand() me lo muestra todo correctamente pero mi  duda es como mediante de ese rand y for poder guardarlo en una variable. Es decir, digamos que tengo este códigillo:

Código:
/* Codigo anterior..... */
              original = "HF72jia6Gd=";
              for(inicio=1;inicio<=15;inicio++){
                   aleatorio = (rand() % strlen(original));    
                   cout<<original[aleatorio];                                                                  
              }
/* Despues mas código... */  

Como veis, ese código, realiza un numero aleatorio 15 veces y cada una de ellas, elige una letra de esa cadena para luego ir mostrandolas una por una asi que de momento no hay problema pero si hago esto (Que sirve para concatenar variables):

Código:
              original = "HF72jia6Gd=";
              for(inicio=1;inicio<=15;inicio++){
                   aleatorio = (rand() % strlen(original));    
                   sprintf(despues, "%s%s", despues, original[aleatorio]);                                                                  
              }    

Si hago eso, no me concatena o une el valor realizado a la cadena si no que se congela el programa y se cierra solo. ¿Que necesito que pase? Necesito que cada letra generada por cada vez, se una a la variables "despues". Por ejemplo, ese codigo devuelve a la variable despues sería: despues = "a"; pero luego me devuelve b por lo que esa variable pasaría a ser: despues = "ab" y así sucesivamente...

¿Me han entendido? Gracias por su atención.


Título: Re: [PROBLEMA] Concatenar variables.
Publicado por: satu en 26 Diciembre 2010, 18:52 pm
Hola

Creo que tu problema viene en la primera iteración del bucle, porque la variable "despues" está vacía y el programa espera un string que no existe. Prueba a hacerlo así

Código
  1. original = "HF72jia6Gd=";
  2.    for(inicio=0;inicio<15;inicio++){
  3.        aleatorio = (rand() % strlen(original));    
  4.        despues[inicio]=original[aleatorio]);                                                                  
  5.        }  
  6.  

Pero no sé si ese es el problema. Esperemos que alguien que sepa nos saque de la duda.

Saludos


Título: Re: [PROBLEMA] Concatenar variables.
Publicado por: Siquillote en 26 Diciembre 2010, 19:13 pm
Hola

Creo que tu problema viene en la primera iteración del bucle, porque la variable "despues" está vacía y el programa espera un string que no existe. Prueba a hacerlo así

Código
  1. original = "HF72jia6Gd=";
  2.    for(inicio=0;inicio<15;inicio++){
  3.        aleatorio = (rand() % strlen(original));    
  4.        despues[inicio]=original[aleatorio]);                                                                  
  5.        }  
  6.  

Pero no sé si ese es el problema. Esperemos que alguien que sepa nos saque de la duda.

Saludos

;D ¡Gracias!. Con lo que tu me has pasado, lo guarda todo el la variable despues pero si haces un cout<<despues no muestra nada pero si haces un cout<<despues[0]<<despues[1]... si que va mostrando letra por letra.

Con el ejercicio que estoy haciendo creo que esto me valdrá, muchas gracias satu por tu ayuda, luego te comento el resultado si he podido lograrlo.

¡'Gracias de nuevo!


Título: Re: [PROBLEMA] Concatenar variables.
Publicado por: satu en 26 Diciembre 2010, 19:21 pm
Hola

Me alegro que te haya sevido. Ahora para poder imprimir y demás debes finalizar el string con el carácter '\0'. Debes poner esto justo después del bucle:
Código
  1. despues[inicio]='\0';
  2.  
y así te funcionará perfectamente

Saludos


Título: Re: [PROBLEMA] Concatenar variables.
Publicado por: Siquillote en 26 Diciembre 2010, 19:23 pm
Hola

Me alegro que te haya sevido. Ahora para poder imprimir y demás debes finalizar el string con el carácter '\0'. Debes poner esto justo después del bucle:
Código
  1. despues[inicio]='\0';
  2.  
y así te funcionará perfectamente

Saludos

¿Como como? Eso no lo he entendido. Por cierto, parece que todo va bien de momento.


Título: Re: [PROBLEMA] Concatenar variables.
Publicado por: satu en 26 Diciembre 2010, 19:35 pm
Pues verás, las cadenas de caracteres deben terminar con este carácter '\0', ya que cuando quieres hacer operaciones con ellas (con las cadenas), como por ejemplo imprimir, las funciones paran cuando encuentran ese caracter, por eso te dije que justo después del bucle tienes que poner esa instrucción, para finalizar tu cadena. Si no lo haces, la función (en este caso cout) no te funciona, aunque también podría haber imprimido "basura" que hay en tu memoria hasta encontrarse con '\0'

No sé si lo entiendes o no, me cuesta explicarme con claridad.

Digamos que sería como el punto en una frase.


Título: Re: [PROBLEMA] Concatenar variables.
Publicado por: Siquillote en 27 Diciembre 2010, 12:24 pm
Pues verás, las cadenas de caracteres deben terminar con este carácter '\0', ya que cuando quieres hacer operaciones con ellas (con las cadenas), como por ejemplo imprimir, las funciones paran cuando encuentran ese caracter, por eso te dije que justo después del bucle tienes que poner esa instrucción, para finalizar tu cadena. Si no lo haces, la función (en este caso cout) no te funciona, aunque también podría haber imprimido "basura" que hay en tu memoria hasta encontrarse con '\0'

No sé si lo entiendes o no, me cuesta explicarme con claridad.

Digamos que sería como el punto en una frase.

Muchas gracias hombre por la explicación;). Y también muchas gracias por solucionarme la duda aunque con lo que me dijiste tube que hacer un algoritmo un poco guarro jajaja.

¿Hay alguna manera de agradecertelo como con karmas o algo así?. :D ;D


Título: Re: [PROBLEMA] Concatenar variables.
Publicado por: satu en 27 Diciembre 2010, 13:31 pm
¿Hay alguna manera de agradecertelo como con karmas o algo así?. :D ;D

Con esto vale ;D ;D
Muchas gracias hombre por la explicación;). Y también muchas gracias por solucionarme la duda

Saludos


Título: Re: [PROBLEMA] Concatenar variables.
Publicado por: Siquillote en 27 Diciembre 2010, 14:12 pm
Con esto vale ;D ;D
Saludos

jajajaj Gracias igualmente ;)