El dia de ayer el profesor MONTIEL PEREZ JESUS YALJA (esto va a servir cuando un escomio quiera saber quien es este wey) nos dejo un pequeño examen sorpresa en equipos de 2 el cual consistia en esto:
Si tenemos un numero 12345 podemos dividirlo entre 10 para q nos quede 1234.5 entonces el .5 lo guardamos en un float y separamos el 123 guardandolo en un int... y así recursivamente hasta q el int nos de 0 de tal forma
Codigo Explicacion Ejemplo
y= n; <---- "n" es el numero q queremos separar y= 1234
y/= 10; <----- aqui y va a ser el numero flotantey= 123.4000
x = y; <-----y aqui guardamos el flotante ya separado en el entero por lo cual solo se guarda la parte entera x=123
y-= x; <---- aqui restamos la parte entera al flotante por q todavia tenemos todos los numeros y=.4000
y*= 10; <---- aqui multiplicamos por 10 para transformar el decimal en entero y=4.0000
Con esto ya tenemos separado un numero en Y(podemos usar %0.f para q no se vean los decimales) y los numero sobrantes estan en X y lo q hacemos es repetir esto hasta q ya no tengamos nada en X y pues por q el tema de la clase era recursividad quedo de la siguiente forma, aparte de q imprimimos el resultado, pero puede guardarse en un array o manipular los numero dependiendo de lo q queramos hacer
void voltea(int n){
int x;
float y;
if(n==0){
return ;}
else
y= n;
y/= 10;
x = y;
y-= x;
printf("%.0f",y*10);
return voltea(x);;
}
el if sirve para cuando la funcion mande a llamarse con x=0 se terminara y pues despues de separar el decimal se manda a llamar la funcion pero pues con un numero menos
y pues ya el codigo total queda de la siguiente forma
#include
#include
#include
void voltea(int );
int main(void){
int n, i=0;
printf("Q numero quieres invertir??");
scanf("%d",&n);
voltea(n);
getch();
return 0;
}
void voltea(int n){
int x;
float y;
if(n==0){
return ;}
else
y= n;
y/= 10;
x = y;
y-= x;
printf("%.0f",y*10);
return voltea(x);;
}
y pues puedes robártelo o hacerle lo q quieras pero pues mínimo deja un comentario de q te lo robaste...
int main(void){Lo q tiene q hacer el programa es q si te dan un numero como 788965 tienes q imprimir el numero 569887 y tenemos q hacer una funcion y pues yo pense en una array e ir guardando pero en ayuda con mi compañero(no se quien hizo la mayotia de el trabajo... creo q si fue trabajo en equipo) llegamos a la conclusión de q teniamos q separar los digitos de alguna forma y se nos ocurrio separarlo con decimales entonces planteamos lo siguiente
int n, i=0;
printf("Q numero quieres invertir??");
scanf("%d",&n);
voltea(n); <------ Esta Funcion tiene q voltear el numero entero
Si tenemos un numero 12345 podemos dividirlo entre 10 para q nos quede 1234.5 entonces el .5 lo guardamos en un float y separamos el 123 guardandolo en un int... y así recursivamente hasta q el int nos de 0 de tal forma
Codigo Explicacion Ejemplo
y= n; <---- "n" es el numero q queremos separar y= 1234
y/= 10; <----- aqui y va a ser el numero flotantey= 123.4000
x = y; <-----y aqui guardamos el flotante ya separado en el entero por lo cual solo se guarda la parte entera x=123
y-= x; <---- aqui restamos la parte entera al flotante por q todavia tenemos todos los numeros y=.4000
y*= 10; <---- aqui multiplicamos por 10 para transformar el decimal en entero y=4.0000
Con esto ya tenemos separado un numero en Y(podemos usar %0.f para q no se vean los decimales) y los numero sobrantes estan en X y lo q hacemos es repetir esto hasta q ya no tengamos nada en X y pues por q el tema de la clase era recursividad quedo de la siguiente forma, aparte de q imprimimos el resultado, pero puede guardarse en un array o manipular los numero dependiendo de lo q queramos hacer
void voltea(int n){
int x;
float y;
if(n==0){
return ;}
else
y= n;
y/= 10;
x = y;
y-= x;
printf("%.0f",y*10);
return voltea(x);;
}
el if sirve para cuando la funcion mande a llamarse con x=0 se terminara y pues despues de separar el decimal se manda a llamar la funcion pero pues con un numero menos
y pues ya el codigo total queda de la siguiente forma
#include
#include
#include
void voltea(int );
int main(void){
int n, i=0;
printf("Q numero quieres invertir??");
scanf("%d",&n);
voltea(n);
getch();
return 0;
}
void voltea(int n){
int x;
float y;
if(n==0){
return ;}
else
y= n;
y/= 10;
x = y;
y-= x;
printf("%.0f",y*10);
return voltea(x);;
}
y pues puedes robártelo o hacerle lo q quieras pero pues mínimo deja un comentario de q te lo robaste...
Tu algoritmo tiene un error, una vez quise hacer lo mismo pero la cosa sucede:
ResponderBorrarY es flotante (123.4)
X es entero (123)
Si haces la resta Y-X no te queda 0.4, te queda 0 en otras palabras:
Y=0
X=123
Resultado: FAIL!
A mi me pasó eso una vez....
Nel!!! no le hagan caso a megadan no sabe programas mi algoritmo esta bien... ha de haber drogado cuando comento eso...
ResponderBorrardespués de exhaustivas pruebas, concluyo 2 cosas:
ResponderBorrar-Su algoritmo está bien
-Yo me equivoqué y pido una disculpa pública por los inconvenientes q esto pudo haber causado
CONCLUSIÓN FINAL:
I FAIL!
También resuelve los de Yaxkin T_T ..
ResponderBorrarprometo pagar con 100 comentarios al díaaa XD ..
Quien es Yaxkin?? pero pues... no creo q sea imposible...(ja)
ResponderBorrarYaxkin es nuestro profe de Progra.
ResponderBorrarAgradecimientos a Denhi por haber comentado ^^
no mames tanta mamada si solo sacando el modulo lo haces en menos lineas de codigo
ResponderBorrar300/10=30
300%10=0----------modulo
y asi lo vas guardando
y ya.................
jajaja ese codigo es una mamada, al igual que la mayoria de los que estudian en esa escuela culera.
ResponderBorrar