Calcular mcd. Compila bien pero no corre
jairogon:
El siguiente programa compila bien pero no corre, la verdad no se por que?
Uso el DevC++.
Código:
//Programa que calcula el m.c.d de dos numeros
//enteros positivos.
#include<iostream>
#include<conio2.h>
using namespace std;
int main()
{
int a=0,b=0,mayor=0, menor=0,residuo=0,divisor=0,dividendo=0,resultado=0,mcd=0;
cout<<"Entra dos numeros enteros: ";
cin>>a>>b;
if(a>=b)
{
mayor=a;
menor=b;
}else
{
mayor=b;
menor=a;
}
dividendo=menor;
divisor=mayor;
do{
resultado=divisor/dividendo;
residuo=divisor%dividendo;
divisor=dividendo;
dividendo=residuo;
}while(dividendo==0||residuo==0);
mcd=dividendo;
if(mcd==1)
{
cout<<"Los numeros :"<<a<<" y"<<b<<" son primos entre si pues el mcd es 1";
} else
{
cout<<"El mcd de "<<a<<" y"<<b<<" es: "<<mcd;
}
getche();
return 0;
}
cbug:
Preferirķa que utilices un system call antes que un getche de conio2.
Si compila bien, no queda otra que depurarlo.
nicolas_cof:
jairogon, te dejo esta funcion que seguro te sirve...
Código:
int mcd( int a, int b )
{
a = abs( a );
b = abs( b );
if ( b == 0 )
return a;
else
return mcd( b, a % b );
}
Nota: codigo corregido en base a lo planteado por do-while
Salu10.
jairogon:
Cita de: nicolas_cof en 1 Julio 2010, 04:53 am
jairogon, te dejo esta funcion que seguro te sirve...
Código:
int mcd( int a, int b )
{
if ( b == 0 )
return a;
else
return mcd( b, a % b );
}
Salu10.
Gracias
Vaya que si me sirvio.
No sabia que el mcd se pudiera hallar recursivamente.
De nuevo mil Gracias
:D ;-)
nicolas_cof:
jairogon, de nada! Para eso estamos ;)
Salu10.
Navegación
[#] Página Siguiente