Homework 10 Solution
Write a program that reads in two fractions from the user and prints out the sum of the two numbers in lowest terms. Recall (from grade school!) that
n1 n2 n1 d2 + n2 d1
-- + -- = -------------
d1 d2 d1 d2
and that to reduce a fraction to lowest terms you divide the numerator n and the denominator d by the greatest common divisor of n and d. Of course, in these lecture notes we discuss greatest common divisor! A run of your program should look something like this:
Enter a fraction addition problem: 15/28 + 7/3215/28 + 7/32 = 169/224 |
Turn In a printout of your code, along with a screen capture of your
program running on input 15/28 + 7/32.
Solution
// KGS
// Hmwk 10
// Adding two fractions
#include <iostream>
using namespace std;
int main(){
int numerator1, numerator2,
denominator1, denominator2;
char junk;
cout << "Enter a fraction addition problem: ";
cin >> numerator1 >>
junk >> denominator1 >> junk >> numerator2 >> junk
>> denominator2;
// Add the two fractions
int ansNumerator,ansDenominator;
ansNumerator =
numerator1*denominator2 + numerator2*denominator1;
ansDenominator =
denominator1*denominator2;
int a, b, r;
// Make sure a contains the larger
of the two numbers
if (ansNumerator
>= ansDenominator) {
a = ansNumerator;
b = ansDenominator;
}
else {
a = ansDenominator;
b = ansNumerator;
}
// Find the gcd
while (b != 0){
r = a % b; //
remember "%" is remainder
a = b;
b = r;
}
// Reduce the fraction
// Note variable a contains the gcd
ansNumerator = ansNumerator/a;
ansDenominator = ansDenominator/a;
// Print the results
cout << endl
<< numerator1 << '/' << denominator1 << " + "
<< numerator2 << '/' << denominator2
<<
" = " << ansNumerator << '/'
<< ansDenominator << endl;
return 0;
}