Tema destacado: Grupo de acebook de elhacker.net
Autor
|
Tema: recursividad (Leído 2,242 veces)
|
andaluz
Desconectado
Mensajes: 266
|
me podrian ayudar a realizar este programita, tengo que introducir un numero por teclado, del numero de cifras que quiera y postrarlo al reves. ejemplo: si introduzco por teclado: 8795 me tiene que mostrar: 5978 #include <stdio.h> #include <stdlib.h> void NumAlReves(int numero,int cont); int main() { int num,cont; printf("\nIntroduce un numero: "); scanf("%d",&num); fflush(stdin); NumAlReves(num,0); system("PAUSE"); return 0; } void NumAlReves(int numero,int cont) { int i; int max=cont+1; if(numero/10==0) { printf("\nEl numero de cifras es: %d",cont+1); } else { NumAlReves((numero/10),cont+1); max=cont+1; } //printf("\nMAX: %d",max); printf("\nNUMERO AL REVES..."); printf("\nNUMERO ORIGINAL: %d",numero); i=max; while(i<0) { printf("\nREVES: %d",numero); i--; } }
|
|
|
|
|
En línea
|
|
|
|
E.P.I.
Desconectado
Mensajes: 346
elprogramadorinformatico [E.P.I.]
|
Revisa las chinchetas  Me parece que hay más posts intentando girar una palabra al revés... puedes utilizarlo con número! Utiliza el buscador del foro 
|
|
|
|
|
En línea
|
La verdad nos hará libres
|
|
|
andaluz
Desconectado
Mensajes: 266
|
si lo tengo que realizar con numero, para voltearla lo tendria que realizar on un for o con un while?? pero para que inicie desde el final, a la variable max le asigno el numero de elementos y despues la voi decrementando, lo que nose es porque no me coje el while que tego implementado.
|
|
|
|
|
En línea
|
|
|
|
E.P.I.
Desconectado
Mensajes: 346
elprogramadorinformatico [E.P.I.]
|
si lo tengo que realizar con numero, para voltearla lo tendria que realizar on un for o con un while?? pero para que inicie desde el final, a la variable max le asigno el numero de elementos y despues la voi decrementando, lo que nose es porque no me coje el while que tego implementado.
Mejor for, para mí  Pero como te he dicho, revisa las chichetas... te saldrá tu ejercicio pero con letras, pero cambiarlo a números no tiene secreto...
|
|
|
|
|
En línea
|
La verdad nos hará libres
|
|
|
andaluz
Desconectado
Mensajes: 266
|
no encuentro las chinchetas que me dices. las he buscado por el tema de recursividad, las he visto pero esque ese tipo de codificacion no lo entiendo.
me podrias ayudar a mejorar el codigo que he puesto yo???
|
|
|
|
|
En línea
|
|
|
|
08l00D
Desconectado
Mensajes: 168
|
te saldrá tu ejercicio pero con letras, pero cambiarlo a números no tiene secreto...
De echo si es muy distinto, son dos tipos de datos diferentes... a las letras las pones en un arreglo y listo iteras haces lo que queres con el arreglo en cambio a un entero no podes tratarlo como un arreglo(a menos que realices una conversion, obviamente)... en cuanto a tu problema podes hacer dos cosas una es manipular el entero mediante operadores a nivel bit... o sino con un truquito matematico sencillo... dividis el numero por 10 y tomas el resto o residuo (estos dos pasos los podes hacer en uno con el operador %) ese resto o residuo va a ser el ultimo digito del entero... mira... #include <stdio.h> #include <stdlib.h> void NumAlReves(int numero); int main() { int num,cont; printf("\nIntroduce un numero: "); scanf("%d",&num); fflush(stdin); printf("El numero al revez es: "); NumAlReves(num); system("PAUSE"); return 0; } void NumAlReves(int numero) { printf("%d", numero % 10); if(numero/10) NumAlReves((numero/10)); }
|
|
|
|
« Última modificación: 16 Marzo 2010, 18:35 por 08l00D »
|
En línea
|
|
|
|
andaluz
Desconectado
Mensajes: 266
|
pero eso es por recursividad 08l00D????
|
|
|
|
|
En línea
|
|
|
|
08l00D
Desconectado
Mensajes: 168
|
pero eso es por recursividad 08l00D????
void NumAlReves(int numero) { printf("%d", numero % 10); if(numero/10) NumAlReves(numero/10); /* Mientras (numero > 10) volves a llamar a la funcion y asi recursivamente :xD */ } Si...
|
|
|
|
« Última modificación: 16 Marzo 2010, 18:43 por 08l00D »
|
En línea
|
|
|
|
andaluz
Desconectado
Mensajes: 266
|
ahhh vale vale, ya que dentro de la funcion llamas a la propia funcion no???
|
|
|
|
|
En línea
|
|
|
|
E.P.I.
Desconectado
Mensajes: 346
elprogramadorinformatico [E.P.I.]
|
|
|
|
|
|
En línea
|
La verdad nos hará libres
|
|
|
andaluz
Desconectado
Mensajes: 266
|
ok gracias por tu ayuda.
|
|
|
|
|
En línea
|
|
|
|
E.P.I.
Desconectado
Mensajes: 346
elprogramadorinformatico [E.P.I.]
|
De nada 
|
|
|
|
|
En línea
|
La verdad nos hará libres
|
|
|
|
Dr.Hacker++
|
como esta eso de llamara a la misma funcion dentro de la misma funcion????
es como una palabra sin terminar
por ejemplo FIN a mitad de fin vuelve a llamar a fin quedaria asi
FIFIFIFIFIFIFIFIFI...
|
|
|
|
|
En línea
|
|
|
|
|
|
08l00D
Desconectado
Mensajes: 168
|
como esta eso de llamara a la misma funcion dentro de la misma funcion????
es como una palabra sin terminar
por ejemplo FIN a mitad de fin vuelve a llamar a fin quedaria asi
FIFIFIFIFIFIFIFIFI...
no si le pones una condicion para que se ejecute la llamada nuevamente o no ... cuando no se ejecute mas por que no se cumple o se cumple tu condicion(depende de como lo hayas diseñado...) se ejecuta la instruccion despues .. y retorna retorna retorna retorna a eip y asi sucesivamente dependiendo cuantas veces se haya efectuado la recursion.. en conclusion son llamadas anidadas de una misma fucion dentro de la misma funcion... pd: disculpa si no entendes un sorete lo que dije... es que soy pesimo para explicar  ... igualmente si sabes ensamblador ... depura el programa y vas a ver todo mas claro ...
|
|
|
|
|
En línea
|
|
|
|
|
|