/
Inicio :: Foros

 F.A.Q.F.A.Q.                  Conéctese para revisar sus mensajesConéctese para revisar sus mensajes   

maximo comun divisor ¿¿¿?????

 
      Índice del Foro elrincondelc.com -> Principiantes C/C++
Ver tema anterior :: Ver siguiente tema  
AutorMensaje
kykyou



Registrado: 02 Sep 2004
Mensajes: 67
Ubicación: santiago, Chile..

MensajePublicado: 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 Crying or Very sad . 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 Crying or Very sad
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 Question agrgadeceria mucho si me dan sugerencias de alguna funcion que pueda usar.
gracias!!!
Volver arriba
zorroviejo



Registrado: 08 Oct 2004
Mensajes: 2

MensajePublicado: 09/10/2004 4:14 am
Título:

Prueba con el algoritmo de euclides Wink
Volver arriba
kamuifan



Registrado: 02 Sep 2004
Mensajes: 8

MensajePublicado: 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..

MensajePublicado: 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 Question
si fueras tan amable de explicarme como trabaja te lo agradeceria mucho.
de antemano muchas gracias! Smile
Volver arriba
kamuifan



Registrado: 02 Sep 2004
Mensajes: 8

MensajePublicado: 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 Very Happy
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 Wink
Volver arriba
kykyou



Registrado: 02 Sep 2004
Mensajes: 67
Ubicación: santiago, Chile..

MensajePublicado: 11/10/2004 9:10 am
Título:

hola kamiufan:
gracias por todo Wink , 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 Confused
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

MensajePublicado: 11/10/2004 3:47 pm
Título:

Efectivamente, soy fan de esa serie. Te agradezco mucho la imagen Very Happy

Aqui en la medida de lo posible intentare ayudar en lo poco que llevo estudiando (estoy estudiando licenciatura en informatica aca en mexico Cool).

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 Wink
Volver arriba
kykyou



Registrado: 02 Sep 2004
Mensajes: 67
Ubicación: santiago, Chile..

MensajePublicado: 11/10/2004 5:19 pm
Título:

hola!
que bueno que te hay agradado la imagen Wink
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! Wink
Volver arriba
      Índice del Foro elrincondelc.com -> Principiantes C/C++
Página 1 de 1Todas las horas están en GMT - 8 Horas

 
No puede crear mensajes
No puede responder temas
No puede editar sus mensajes
No puede borrar sus mensajes
No puede votar en encuestas

(c) ElRincondelC.com

Un proyecto de UrlanHeat.com