Hi folks.
My class is working on the whole fraction thing, which of course involves reducing. I found something interesting via a search of the boards here, the binary Euclid's algorithm.
Anyway I tried crunching the rules into code, and came up with this:
Code:
#include <iostream>
#include <cmath>
using namespace std;
int main (int n, int m)
{
cout<<"enter n";
cin>>n;
cout<<"enter m";
cin>>m;
if (n>=m)
{
if (n%2==0 && m%2==0)
{
n /= 2;
m /= 2;
}
else if ((n%2==0 && m%2!=0)||(n%2!=0 && m%2==0))
{
n /= 2;
m = m;
}
else if ((n-m)%2==0)
{
m-=n;
}
cout<<"gcd:"<<m;
}
else if (m>n)
{
if (m%2==0 && n%2==0)
{
m /= 2;
n /= 2;
}
else if( (m%2==0 && n%2!=0)||(m%2!=0 && n%2==0))
{
m /= 2;
n = n;
}
else if ((m-n)%2==0)
{
n-=m;
}
cout<<"gcd:"<<n;
}
system ("pause");
return 0;
}
I'm getting some weird results, but for the life of me I can't figure out where things are going wrong.
So, I have two questions:
1. Any hints as to where my logic is flawed?
2. I am currently using the new bloodshed compiler. One thing that would help me greatly is if I could "track" a variable through the program to check where it went wrong. How do I do that?
Thanks