2. Implement operator overloading. Operator Overloading a) Implement one unary operator overload functions (-,+, !). b) Implement any two arithmetic operator overload functions (+,-,*,/,%). c) Implement any two relational operator overload functions (==, !=,>,<=). d) Implement the insertion operator overload function (<<). e) Implement the extraction operator overload function (>>). f) Implement the subscript operator overload function ([]). Make sure that each function is optimally overloaded for its purpose. (pick between member, non-member, friend as appropriate) Notes Add Rational Numbers Given a/b + c/d: Step 1: Find the LCM of b and d. Step 2: Create a new Rational Number: ((a* (LCM/b) + (c* (LCM/d)) / LCM. Step 3: Reduce the new Rational Number from step 2. Step 4: Return the new Rational Number. Subtract Rational Numbers Given a/b - c/d: Step 1: Find the LCM of b and d. Step 2: Create a new Rational Number: ((a* (LCM/b) (c* (LCM/d) ) / LCM. Step 3: Reduce the new Rational Number from step 2. Step 4: Return the new Rational Number. Multiply Rational Numbers Given a/b * c/d: Step 1: Create a new Rational Number: (a*c) / (b*d). Step 2: Reduce the new Rational Number from step 1. Step 3: Return the new Rational Number. Divide Rational Numbers Given a/b / c/d: Step 1: Create a new Rational Number: (a*d) / (b*c). Step 2: Reduce the new Rational Number from step 1. Step 3: Return the new Rational Number. Compare Rational Numbers: greater than Determine if a/b > c/d: Step 1: Find the LCM of b and d. Step 2: If (a* (LCM/b) > (c* (LCM/d) return true, otherwise false. Compare Rational Numbers: less than Determine if a/b < c/d: Step 1: Find the LCM of b and d. Step 2: If (a* (LCM/b) < (c* (LCM/d) return true, otherwise false. Example Driver Program int main() { cout <« endl; RatNum r1(1,2), r2(1,6), r3(2,5); // test operator overloads cout « "\nInput/Output Stream Operators: " « endl; RatNum r4; cout <« "Enter a rational number: "; cin >> r4; cout <« r4 « endl; cout « "Negation Operation: " <« endl; cout <« -r4 « endl; // test arithmetic overloads cout « "\nArithmetic Operators: " « endl; RatNum r5 = r1 + r2; cout <« r1 « " + " << r2 < " = " « r5 « endl; RatNum r6 = r1 - r2; cout <« r1 « " - " << r2 < " = " « r6 « endl; RatNum r7 = r1 * r2; cout <« r1 « " * " « r2 < " = " « r7 « endl; RatNum r8 = r1 / r2; cout <« r1 « " / " « r2 « " = " « r8 << endl; // test arithmetic operation chaining « endl; cout <« "\nArithmetic Chaining: " RatNum r9 = r5 + r6 - r7 * r8; cout <« r5 « " + " <« r6 << " - " « r7 « "*" « r8 « " = " << r9 << endl; // test relational operator overload cout « "\nRelational Operators: cout <« r5 « " == " « r6 « "? " « (r5==r6) « endl; " <« endl; cout <« r5 « " != " « r6 « "? " « (r5!=r6) « endl; cout <« r5 « " > " « r6 « "? " « (r5>r6) « endl; cout <« r5 « " < " « r6 « "? " « (r5

Database System Concepts
7th Edition
ISBN:9780078022159
Author:Abraham Silberschatz Professor, Henry F. Korth, S. Sudarshan
Publisher:Abraham Silberschatz Professor, Henry F. Korth, S. Sudarshan
Chapter1: Introduction
Section: Chapter Questions
Problem 1PE
icon
Related questions
Question

I'm stuck on this question and I don't know how I should be approaching this. What should I do?

2. Implement operator overloading.
Operator Overloading
a) Implement one unary operator overload functions (-,+, !).
b) Implement any two arithmetic operator overload functions (+,-,*,/,%).
c) Implement any two relational operator overload functions (==, !=,>,<=).
d) Implement the insertion operator overload function (<<).
e) Implement the extraction operator overload function (>>).
f) Implement the subscript operator overload function ([]).
Make sure that each function is optimally overloaded for its purpose.
(pick between member, non-member, friend as appropriate)
Notes
Add Rational Numbers
Given a/b + c/d:
Step 1: Find the LCM of b and d.
Step 2: Create a new Rational Number: ((a* (LCM/b) +
(c* (LCM/d)) / LCM.
Step 3: Reduce the new Rational Number from step 2.
Step 4: Return the new Rational Number.
Subtract Rational Numbers
Given a/b - c/d:
Step 1: Find the LCM of b and d.
Step 2: Create a new Rational Number: ((a* (LCM/b)
(c* (LCM/d) ) / LCM.
Step 3: Reduce the new Rational Number from step 2.
Step 4: Return the new Rational Number.
Multiply Rational Numbers
Given a/b * c/d:
Step 1: Create a
new Rational Number: (a*c) / (b*d).
Step 2: Reduce the new Rational Number from step 1.
Step 3: Return the new Rational Number.
Divide Rational Numbers
Given a/b / c/d:
Step 1: Create a new Rational Number: (a*d) / (b*c).
Step 2: Reduce the new Rational Number from step 1.
Step 3: Return the new Rational Number.
Compare Rational Numbers: greater than
Determine if a/b > c/d:
Step 1: Find the LCM of b and d.
Step 2: If (a* (LCM/b) > (c* (LCM/d) return true, otherwise false.
Compare Rational Numbers: less than
Determine if a/b < c/d:
Step 1: Find the LCM of b and d.
Step 2: If (a* (LCM/b) < (c* (LCM/d) return true, otherwise false.
Transcribed Image Text:2. Implement operator overloading. Operator Overloading a) Implement one unary operator overload functions (-,+, !). b) Implement any two arithmetic operator overload functions (+,-,*,/,%). c) Implement any two relational operator overload functions (==, !=,>,<=). d) Implement the insertion operator overload function (<<). e) Implement the extraction operator overload function (>>). f) Implement the subscript operator overload function ([]). Make sure that each function is optimally overloaded for its purpose. (pick between member, non-member, friend as appropriate) Notes Add Rational Numbers Given a/b + c/d: Step 1: Find the LCM of b and d. Step 2: Create a new Rational Number: ((a* (LCM/b) + (c* (LCM/d)) / LCM. Step 3: Reduce the new Rational Number from step 2. Step 4: Return the new Rational Number. Subtract Rational Numbers Given a/b - c/d: Step 1: Find the LCM of b and d. Step 2: Create a new Rational Number: ((a* (LCM/b) (c* (LCM/d) ) / LCM. Step 3: Reduce the new Rational Number from step 2. Step 4: Return the new Rational Number. Multiply Rational Numbers Given a/b * c/d: Step 1: Create a new Rational Number: (a*c) / (b*d). Step 2: Reduce the new Rational Number from step 1. Step 3: Return the new Rational Number. Divide Rational Numbers Given a/b / c/d: Step 1: Create a new Rational Number: (a*d) / (b*c). Step 2: Reduce the new Rational Number from step 1. Step 3: Return the new Rational Number. Compare Rational Numbers: greater than Determine if a/b > c/d: Step 1: Find the LCM of b and d. Step 2: If (a* (LCM/b) > (c* (LCM/d) return true, otherwise false. Compare Rational Numbers: less than Determine if a/b < c/d: Step 1: Find the LCM of b and d. Step 2: If (a* (LCM/b) < (c* (LCM/d) return true, otherwise false.
Example Driver Program
int main() {
cout <« endl;
RatNum r1(1,2), r2(1,6), r3(2,5);
// test operator overloads
cout « "\nInput/Output Stream Operators:
" « endl;
RatNum r4;
cout <« "Enter a rational number: ";
cin >> r4;
cout <« r4 « endl;
cout « "Negation Operation: " <« endl;
cout <« -r4 « endl;
// test arithmetic overloads
cout « "\nArithmetic Operators: " « endl;
RatNum r5 = r1 + r2;
cout <« r1 « " + " << r2 <
" = " « r5 « endl;
RatNum r6 = r1 - r2;
cout <« r1 « " - " << r2 <
" = " « r6 « endl;
RatNum r7 = r1 * r2;
cout <« r1 « " * " « r2 <
" = " « r7 « endl;
RatNum r8 = r1 / r2;
cout <« r1 « " / " « r2 «
" = " « r8 << endl;
// test arithmetic operation chaining
« endl;
cout <« "\nArithmetic Chaining: "
RatNum r9 = r5 + r6 - r7 * r8;
cout <« r5 « " + " <« r6 << " - " « r7 « "*" « r8 « " = " << r9 << endl;
// test relational operator overload
cout « "\nRelational Operators:
cout <« r5 « " == " « r6 « "? " « (r5==r6) « endl;
" <« endl;
cout <« r5 « " != " « r6 « "? " « (r5!=r6) « endl;
cout <« r5 « " > " « r6 « "? " « (r5>r6) « endl;
cout <« r5 « " < " « r6 « "? " « (r5<r6) « endl;
// test subscript overload
cout « "\nSubscript Operator: " « endl;
cout <« r5 « " num=" « r5[1] «" den=" << r5[2] <« endl;
cout <« endl;
return 0;
}
Transcribed Image Text:Example Driver Program int main() { cout <« endl; RatNum r1(1,2), r2(1,6), r3(2,5); // test operator overloads cout « "\nInput/Output Stream Operators: " « endl; RatNum r4; cout <« "Enter a rational number: "; cin >> r4; cout <« r4 « endl; cout « "Negation Operation: " <« endl; cout <« -r4 « endl; // test arithmetic overloads cout « "\nArithmetic Operators: " « endl; RatNum r5 = r1 + r2; cout <« r1 « " + " << r2 < " = " « r5 « endl; RatNum r6 = r1 - r2; cout <« r1 « " - " << r2 < " = " « r6 « endl; RatNum r7 = r1 * r2; cout <« r1 « " * " « r2 < " = " « r7 « endl; RatNum r8 = r1 / r2; cout <« r1 « " / " « r2 « " = " « r8 << endl; // test arithmetic operation chaining « endl; cout <« "\nArithmetic Chaining: " RatNum r9 = r5 + r6 - r7 * r8; cout <« r5 « " + " <« r6 << " - " « r7 « "*" « r8 « " = " << r9 << endl; // test relational operator overload cout « "\nRelational Operators: cout <« r5 « " == " « r6 « "? " « (r5==r6) « endl; " <« endl; cout <« r5 « " != " « r6 « "? " « (r5!=r6) « endl; cout <« r5 « " > " « r6 « "? " « (r5>r6) « endl; cout <« r5 « " < " « r6 « "? " « (r5<r6) « endl; // test subscript overload cout « "\nSubscript Operator: " « endl; cout <« r5 « " num=" « r5[1] «" den=" << r5[2] <« endl; cout <« endl; return 0; }
Expert Solution
trending now

Trending now

This is a popular solution!

steps

Step by step

Solved in 2 steps

Blurred answer
Knowledge Booster
Research
Learn more about
Need a deep-dive on the concept behind this application? Look no further. Learn more about this topic, computer-science and related others by exploring similar questions and additional content below.
Recommended textbooks for you
Database System Concepts
Database System Concepts
Computer Science
ISBN:
9780078022159
Author:
Abraham Silberschatz Professor, Henry F. Korth, S. Sudarshan
Publisher:
McGraw-Hill Education
Starting Out with Python (4th Edition)
Starting Out with Python (4th Edition)
Computer Science
ISBN:
9780134444321
Author:
Tony Gaddis
Publisher:
PEARSON
Digital Fundamentals (11th Edition)
Digital Fundamentals (11th Edition)
Computer Science
ISBN:
9780132737968
Author:
Thomas L. Floyd
Publisher:
PEARSON
C How to Program (8th Edition)
C How to Program (8th Edition)
Computer Science
ISBN:
9780133976892
Author:
Paul J. Deitel, Harvey Deitel
Publisher:
PEARSON
Database Systems: Design, Implementation, & Manag…
Database Systems: Design, Implementation, & Manag…
Computer Science
ISBN:
9781337627900
Author:
Carlos Coronel, Steven Morris
Publisher:
Cengage Learning
Programmable Logic Controllers
Programmable Logic Controllers
Computer Science
ISBN:
9780073373843
Author:
Frank D. Petruzella
Publisher:
McGraw-Hill Education