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:

I'm getting some weird results, but for the life of me I can't figure out where things are going wrong.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; }

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