Okay, so I'm making a function that reduces a rational number by calculating the greatest common factor, and then returns the new numerator and denominator after reducing/simplifying. Ex: 24/60 to 2/5.
void reduce(int &num, int &den){
int remainder = num % den;
while(remainder!=0){
num = den;
den = remainder;
remainder = num % den;
cout << "gcf: " << remainder << endl;
break;
}
num = num / remainder;
den = den / remainder;
}
The function should return num = 2 and den = 5. However, for some reason, it's returning num = 5 and den = 2.
My main function looks like this
int main() {
int num = 24;
int den = 60;
reduce(num, den);
cout << num << " " << den;
// Output:
// gcf: 12
// 5 2
You are changing num
and den
inside while
loop. That value should not be changed.
Please store num
and den
variables inside other variable and do the operation using those values as follows.
void reduce(int &num, int &den){
int remainder = num % den;
int tempNum = num, tempDen = den;
while(remainder != 0){
tempNum = tempDen;
tempDen = remainder;
remainder = tempNum % tempDen;
cout << "gcf: " << remainder << endl;
break;
}
num = num / remainder;
den = den / remainder;
}
int main() {
int num =24;
int den = 60;
reduce(num,den);
cout << num << " " << den;
return 0;
}