Calcular mcd. Compila bien pero no corre

(1/5) > >>

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

[0] Índice de Mensajes

[#] Página Siguiente