| Ver tema anterior :: Ver siguiente tema | | Autor | Mensaje |
|---|
kykyou
Registrado: 02 Sep 2004 Mensajes: 67 Ubicación: santiago, Chile..
| Publicado: 08/10/2004 5:44 pm | | | Título: maximo comun divisor ¿¿¿????? |
| hola!!! he tratado de hacer un algoritmo que me de el maximo comun divisor, pero por mas que trato no se me ocurre nada . para empezar mi profe me pide hacer una funcion que calcule el maximo comun divisor y despues haga un programa de prueba, eso no es problema, lo que no se me ocurre es como hacer la funcion que me calcule el maximo comun divisor  se me ocuure que puedo dividir ambos numeros desde uno al menor de los dos y despues capturar el maximo divisor de cada uno que sean iguales. el problema es que no se me ocurre como hacerlo agrgadeceria mucho si me dan sugerencias de alguna funcion que pueda usar. gracias!!! |
| | Volver arriba | |  | zorroviejo
Registrado: 08 Oct 2004 Mensajes: 2
| Publicado: 09/10/2004 4:14 am | | | Título: |
| Prueba con el algoritmo de euclides  |
| | Volver arriba | |  | kamuifan

Registrado: 02 Sep 2004 Mensajes: 8
| Publicado: 10/10/2004 10:22 am | | | Título: |
| Este es el algoritmo de euclides, para sacar el MCD de 2 numeros (se usa recursividad)
| Código: | #include<stdio.h> #include<conio.h> int euclides(int a,int b){ int c; printf("%i\t%i\n",a,b); if(a>b){ c=a; a=b; b=c; }
if(a==b)return b; else return euclides(a,b-a);
}
main(){ int a,b; printf("Da un valor\n"); scanf("%i",&a); printf("Da otro valor\n"); scanf("%i",&b); printf("El MCD es %i",euclides(a,b)); getch(); return 0; }
|
|
| | Volver arriba | |  | | kykyou
Registrado: 02 Sep 2004 Mensajes: 67 Ubicación: santiago, Chile..
| Publicado: 10/10/2004 3:57 pm | | | Título: |
| hola kamuifan: sabes, no entiendo mucho como trabaja el algoritmo de euclides...lo mire pero igual no lo entinedo  si fueras tan amable de explicarme como trabaja te lo agradeceria mucho. de antemano muchas gracias!  |
| | Volver arriba | |  | kamuifan

Registrado: 02 Sep 2004 Mensajes: 8
| Publicado: 10/10/2004 6:20 pm | | | Título: |
| El algoritmo de euclides funciona de la siguiente manera
Como es el algoritmo en si? Digamos que tienes 2 numeros, que sean 18 y 12 por ejemplo: 18 12| Tomas el valor mayor y le restas el menor (18-12=6) 6 12| El resultado lo pones debajo del numero mayor, el otro pasa igual
Y queda asi: 6 12 | Tomas de nuevo el valor mayor y le restas el menor (12-6=6) 6 6 | y el resultado lo pones debajo del numero mayor
El algoritmo termina cuando los 2 numeros finales sean iguales, cuando sean iguales ese será el MCD (en este caso 6).
Bien, ahora en codigo Se dan los valores a=18 b=12
Entra al if y como 18 es mayor que 12 se hace intercambio de variable, a sera b y b sera a (para eso nos ayudamos de una variable c para poder hacer el intercambio), tenemos a=12 y b=18. Como no son iguales se volvera a llamar la funcion, con los valores a y b-a (12 y 6).
a=12 b=6 De nuevo a es mayor, se hace intercambio de variable y se llama a funcion con valores de a y b-a (a es 6 y b es b-a, 6)
Ya no se entra al if, y como a=b entonces regresa ese valor, el cual sera el MCD.
Y que pasaria si se metieran las variables como 12 y 18? a=12 b=18
No entra al if y se regresa a la funcion con los valores 12 y 6, por lo que no importa cual numero se meta primero.
Espero que sea de ayuda  |
| | Volver arriba | |  | kykyou
Registrado: 02 Sep 2004 Mensajes: 67 Ubicación: santiago, Chile..
| Publicado: 11/10/2004 9:10 am | | | Título: |
| hola kamiufan: gracias por todo , me ayudaste mucho... mira ahora te muestro como lo hice con los requisitos que me pedian, resulto muy bien!! en realidad yo no conocia ese metodo, espero me lo acepten.
| Código: | #include<stdio.h> #include<math.h> #include<conio.h>
long int mcd(long int a, long int b) { long int m; while(a!=b) { if(a>b) a=a-b; else b=b-a; } if(a<b) return(a); else return(b); }
void main() { long int num1,num2, e; printf("\n\nIngrese el primer numero a trabajar ==>"); scanf("%ld",&num1); printf("\n\nIngrese el segundo numero a trabajar ==>"); scanf("%ld",&num2); clrscr(); e=mcd(num1,num2); printf("\n\nEl maximo comun divisor entre los numeros ingresado
es ==> %ld",e); printf("\n\nPresione cualquier tecla para continuar:"); getch(); }
|
si saben mas metodos para hacer este algoritmo seria de gran ayuda. bueno, gracias kamuifan . supongo que te gusta X clamp asi que te dejo una imagen de kamui, espero no estar equivocada  bueno, sino igual espero te guste. nos vemos!!
[img] http://groups.msn.com/_Secure/0RgCPAqsUWM4GFD9EjRD!NIbeixrIiSF8YR3vNjKbnEGqxwHuSiCzOFhWh2c6id1O0W7j1leIpy!ET*Py6bMM9nGddX5H2ANnURguz*BUs4I/X01.JPG?dc=4675479200506994621 [/img] |
| | Volver arriba | |  | | kamuifan

Registrado: 02 Sep 2004 Mensajes: 8
| Publicado: 11/10/2004 3:47 pm | | | Título: |
| Efectivamente, soy fan de esa serie. Te agradezco mucho la imagen 
Aqui en la medida de lo posible intentare ayudar en lo poco que llevo estudiando (estoy estudiando licenciatura en informatica aca en mexico ).
Compile tu codigo y funciona bien. Se puede reducir el codigo y optimizar el programa (bueno, es relativo, el programa no consume recursos como para percatarse de su velocidad de ejecucion).
Long int m no se usa. Puedes regresar cualquier valor en la funcion (a o b), ya que en el while estas forzando a que sean iguales. La libreria math no es usada.
Espero que sea de ayuda. Muchas gracias nuevamente por la imagen  |
| | Volver arriba | |  | kykyou
Registrado: 02 Sep 2004 Mensajes: 67 Ubicación: santiago, Chile..
| Publicado: 11/10/2004 5:19 pm | | | Título: |
| hola! que bueno que te hay agradado la imagen  gracias por tus consejos y como buena otaku te proporciono algunas paginas de anime (se que de esto no se trata este foro, pero ahi van) [url] http://www.universoanime.com
[/url] esas son unas de las mejores paginas que conosco, no son muchas pero bueno... en la ultima puedes bajar el ultimo disco completo de l`arc en ciel si te interesa. tambien hay musica de series como X, ahi ve tu... que estes bien
nos vemos!  |
| | Volver arriba | |  | | |
| No puede crear mensajes No puede responder temas No puede editar sus mensajes No puede borrar sus mensajes No puede votar en encuestas
|
|
| |