TEXT: Problem Solving, Abstraction, and Design using C++; 5th (Frank Friedman &
ID: 3637107 • Letter: T
Question
TEXT: Problem Solving, Abstraction, and Design using C++; 5th (Frank Friedman & Koffman)Project Problem #10, page 342
Write a function that reads a problem involving two common fractions such as 2/4 + 5/6. After reading the common fractions problem, call a function to perform the indicated operation (call addFrac for +, call multiplyFrac for *, call subtractFrac for -, and divideFrac for /). Pass the numerator and denominator of both fractions to the function that performs the operation; the function should return the numerator and denominator of the result through its output parameters. Then display the result as a common fraction. (Hint: Use functions readFracProblem and getFrac)
(Example Below)
Enter Problem: 2/4 * 5/6
Multiplication Result: 5/12
Enter Problem: 2/4 + 5/6
Addition Result: 4/3
Enter problem: 2/0 + 5/0
N/A
Enter Problem: 2/4 = 5/6
Error
Explanation / Answer
please rate - thanks
#include<iostream>
#include<string>
using namespace std;
void readFracProblem(char&,int&,int&, int&, int&);
void addFrac(int,int, int, int, int&, int&);
void subtractFrac(int,int, int, int, int&, int&);
void multiplyFrac(int,int, int, int, int&, int&);
void divideFrac(int,int, int, int, int&, int&);
void simplify(int&,int&);
void output(string,int,int);
int main()
{int n1,n2,n3,d1,d2,d3;
char op;
readFracProblem(op,n1,n2, d1, d2);
if(op=='+')
{addFrac(n1,n2, d1, d2, n3, d3);
output("Addition",n3,d3);
}
else if(op=='-')
{subtractFrac(n1,n2, d1, d2, n3, d3);
output("Subtraction",n3,d3);
}
else if(op=='*')
{multiplyFrac(n1,n2, d1, d2, n3, d3);
output("Multiplication",n3,d3);
}
else if(op=='/')
{divideFrac(n1,n2, d1, d2, n3, d3);
output("Division",n3,d3);
}
else if(op=='e')
cout<<"N/A ";
else
cout<<"Error ";
system("pause");
return 0;
}
void output(string m,int n,int d)
{cout<<m<<" result: "<<n<<'/'<<d<< endl;
}
void simplify(int& numerator, int& denominator) //Euclids algorithm
{int a,b;
a=numerator;
b=denominator;
while(a!=b)
{if(a>b)
a -= b;
else
b -= a;
}
numerator/=a;
denominator/=a;
}
void readFracProblem(char& op,int& n1,int& n2,int& d1,int& d2)
{
cout<<"Enter Problem: ";
char slash,trash;
cin>>n1>>slash>>d1>>op>>n2>>slash>>d2;
trash=getchar();
if(d1==0||d2==0)
op='e';
}
void addFrac(int n1,int n2,int d1,int d2,int& n3,int& d3)
{
n3=(d1*n2)+(d2*n1);
d3=(d1*d2);
simplify(n3,d3);
}
void subtractFrac(int n1,int n2,int d1,int d2,int& n3,int& d3)
{
n3=(d2*n1)-(d1*n2);
d3=(d1*d2);
simplify(n3,d3);
}
void multiplyFrac(int n1,int n2,int d1,int d2,int& n3,int& d3)
{
n3=(n2*n1);
d3=(d1*d2);
simplify(n3,d3);
}
void divideFrac(int n1,int n2,int d1,int d2,int& n3,int& d3)
{
n3=(d2*n1);
d3=(d1*n2);
simplify(n3,d3);
}
Related Questions
Navigate
Integrity-first tutoring: explanations and feedback only — we do not complete graded work. Learn more.