**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;

`}`