Write a function that reads a problem involving two common fractions such as 2/4
ID: 3782546 • Letter: W
Question
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 *, and so on). Pass the numerator and denominator of both fractions to the function that performs the operation; the func- tion should return the numerator and denominator of the result through its output parameters. Then display the result as a common fraction.
your program should be like this sample output
This is my coding
#include <iostream>
#include <string>
using namespace std;
void readFracProblem(int&, int&, int&, int&, char&);
void addFrac(int, int, int, int, int&, int&);
void subFrac(int, int, int, int, int&, int&);
void multiplyFrac(int, int, int, int, int&, int&);
void divideFrac(int, int, int, int, int&, int&);
void output(char, int, int);
int main()
{
int numerator1, numerator2, numerator3, denominator1, denominator2, denominator3;
char op;
string an;
readFracProblem(numerator1, numerator2, denominator1, denominator2, op);
if(op == '+')
{
addFrac(numerator1, numerator2, denominator1, denominator2, numerator3, denominator3);
output(op, numerator3, denominator3);
}
else if(op == '-')
{
subFrac(numerator1, numerator2, denominator1, denominator2, numerator3, denominator3);
output(op, numerator3, denominator3);
}
else if(op == '*')
{
multiplyFrac(numerator1, numerator2, denominator1, denominator2, numerator3, denominator3);
output(op, numerator3, denominator3);
}
else if(op == '/')
{
divideFrac(numerator1, numerator2, denominator1, denominator2, numerator3, denominator3);
output(op, numerator3, denominator3);
}
else
{
cout << "Invalid operation" << endl;
}
while(an != "No")
{
cout << "Continue: Yes/No? ";
cin >> an;
if(an == "Yes")
{
cin >> an;
readFracProblem(numerator1, numerator2, denominator1, denominator2, op);
output(op, numerator3, denominator3);
}
else
{
cout << "You entered wrong input" << endl;
}
readFracProblem(numerator1, numerator2, denominator1, denominator2, op);
output(op, numerator3, denominator3);
}
return 0;
}
void readFracProblem(int& n1, int& n2, int& d1, int& d2, char& op)
{
cout << "Enter a common fraction problem: ";
char slash, trash;
cin >> n1 >> slash >> d1 >> op >> n2 >> slash >> d2;
//trash = getchar();
if(d1 == 0 || d2 == 0)
cout << "Cannot solve this problem" << endl;
}
void addFrac(int n1, int n2, int d1, int d2, int& n3, int& d3)
{
n3 = (d1 * n2) + (d2 * n1);
d3 = (d1 * d2);
}
void subFrac(int n1, int n2, int d1, int d2, int& n3, int& d3)
{
n3 = (d2 * n1) - (d1 * n2);
d3 = (d1 * d2);
}
void multiplyFrac(int n1, int n2, int d1, int d2, int& n3, int& d3)
{
n3 = (n2 * n1);
d3 = (d1 * d2);
}
void divideFrac(int n1, int n2, int d1, int d2, int& n3, int& d3)
{
n3 = (d2 * n1);
d3 = (d1 * n2);
}
void output(char op, int n, int d)
{
//cout << m << " result: " << n << '/' << d << endl;
if(op == '+')
{
cout << "add result " << n << '/' << d << endl;
}
else if(op == '-')
{
cout << "sub result " << n << '/' << d << endl;
}
else if(op == '*')
{
cout << "mult result " << n << '/' << d << endl;
}
else if(op == '/')
{
cout << "div result " << n << '/' << d << endl;
}
}
Can anyone correct my coding to get the same result as the sample output in the above please
Explanation / Answer
#include <iostream>
#include <string>
using namespace std;
void readFracProblem(int&, int&, int&, int&, char&);
void addFrac(int, int, int, int, int&, int&);
void subFrac(int, int, int, int, int&, int&);
void multiplyFrac(int, int, int, int, int&, int&);
void divideFrac(int, int, int, int, int&, int&);
void output(char, int, int);
void CalcRes();
int numerator1, numerator2, numerator3, denominator1, denominator2, denominator3;
char op;
string an;
int main()
{
readFracProblem(numerator1, numerator2, denominator1, denominator2, op);
CalcRes();
while(an != "No")
{
cout << "Continue: Yes/No? ";
cin >> an;
if(an == "Yes")
{
//cin >> an;
readFracProblem(numerator1, numerator2, denominator1, denominator2, op);
CalcRes();
//output(op, numerator3, denominator3);
}
else
{
cout << "You entered wrong input" << endl;
}
/* readFracProblem(numerator1, numerator2, denominator1, denominator2, op);
output(op, numerator3, denominator3);*/
}
return 0;
}
void CalcRes(){
if(op == '+')
{
addFrac(numerator1, numerator2, denominator1, denominator2, numerator3, denominator3);
output(op, numerator3, denominator3);
}
else if(op == '-')
{
subFrac(numerator1, numerator2, denominator1, denominator2, numerator3, denominator3);
output(op, numerator3, denominator3);
}
else if(op == '*')
{
multiplyFrac(numerator1, numerator2, denominator1, denominator2, numerator3, denominator3);
output(op, numerator3, denominator3);
}
else if(op == '/')
{
divideFrac(numerator1, numerator2, denominator1, denominator2, numerator3, denominator3);
output(op, numerator3, denominator3);
}
else
{
cout << "Invalid operation" << endl;
}
}
void readFracProblem(int& n1, int& n2, int& d1, int& d2, char& op)
{
cout << "Enter a common fraction problem: ";
char slash, trash;
cin >> n1 >> slash >> d1 >> op >> n2 >> slash >> d2;
//trash = getchar();
if(d1 == 0 || d2 == 0)
cout << "Cannot solve this problem" << endl;
}
void addFrac(int n1, int n2, int d1, int d2, int& n3, int& d3)
{
n3 = (d1 * n2) + (d2 * n1);
d3 = (d1 * d2);
}
void subFrac(int n1, int n2, int d1, int d2, int& n3, int& d3)
{
n3 = (d2 * n1) - (d1 * n2);
d3 = (d1 * d2);
}
void multiplyFrac(int n1, int n2, int d1, int d2, int& n3, int& d3)
{
n3 = (n2 * n1);
d3 = (d1 * d2);
}
void divideFrac(int n1, int n2, int d1, int d2, int& n3, int& d3)
{
n3 = (d2 * n1);
d3 = (d1 * n2);
}
void output(char op, int n, int d)
{
//cout << m << " result: " << n << '/' << d << endl;
if(op == '+')
{
/*addFrac(numerator1, numerator2, denominator1, denominator2, numerator3, denominator3);
output(op, numerator3, denominator3);*/
cout << "add result " << n << '/' << d << endl;
}
else if(op == '-')
{
cout << "sub result " << n << '/' << d << endl;
}
else if(op == '*')
{
cout << "mult result " << n << '/' << d << endl;
}
else if(op == '/')
{
cout << "div result " << n << '/' << d << endl;
}
else
{
cout << "Invalid operation" << endl;
}
}
Related Questions
drjack9650@gmail.com
Navigate
Integrity-first tutoring: explanations and feedback only — we do not complete graded work. Learn more.