Homework 17 Solution
Write a program that reads in a list of fractions from the user, each separated by commas and the whole terminated by a semicolon, prints out the ones that are not in lowest terms. For example, a typical run might look like this (user input shown in red):
2/4, 6/9, 3/11, 21/5, 8/10;2/4 is not in lowest terms!
6/9 is not in lowest terms!
8/10 is not in lowest terms!
In writing this program, define and use a function int gcd(int,int); that takes two
positive integers and returns their greatest common divisor. (Check out Class 10 to remind yourself
about computing gcd's.) Turn In a printout of your program along with a
screen capture showing your program running on the above input.
Solution
// KGS
// Hmwk 17
#include <iostream>
using namespace std;
// prototype
int gcd(int,int);
int main (){
int numerator,denominator,lowest;
char separator;
cout << "Enter a
list of common fractions separated by commas"
<< " and terminated with a ;" << endl;
do {
cin >> numerator
>> separator >> denominator >> separator;
lowest =
gcd(numerator,denominator);
if (lowest != 1)
cout
<< numerator << '/' << denominator
<< " is not in lowest terms!"
<< endl;
} while (separator != ';');
return 0;
}
int gcd (int num, int den){
int a, b, r;
if (num >= den) {
a = num;
b = den;
}
else {
a = den;
b = num;
}
while (b != 0){
r = a % b; // remember
"%" is remainder
a = b;
b = r;
}
return a;
}