Advertisement
Guest User

Untitled

a guest
Jan 23rd, 2018
65
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
text 4.36 KB | None | 0 0
  1. #include <iostream>
  2. #include <vector>
  3. #include <string>
  4. using namespace std;
  5. class Rational {
  6. private:
  7. int numerator;
  8. int denominator;
  9. public:
  10. Rational();
  11. explicit Rational(int);
  12. Rational(int, int);
  13. const Rational add(const Rational &) const;
  14. const Rational subtract(const Rational &) const;
  15. const Rational multiply(const Rational &) const;
  16. const Rational divide(const Rational &) const;
  17. void simplify();
  18. void display() const;
  19. private:
  20. int gcd(int, int) const;
  21. };
  22. Rational::Rational(){
  23. this->denominator = 1;
  24. this->numerator = 0;
  25. }
  26.  
  27. Rational::Rational(int n, int d){
  28. this->numerator = n;
  29. this->denominator = d;
  30. }
  31.  
  32. Rational::Rational(int n){
  33. this->numerator = n;
  34. this->denominator = 1;
  35. }
  36.  
  37. const Rational Rational::add(const Rational &temp) const{
  38. Rational *r = new Rational();
  39. r->numerator = (this->numerator*temp.denominator + this->denominator*temp.numerator);
  40. r->denominator = (this->denominator * temp.denominator);
  41. return *r;
  42. }
  43.  
  44. const Rational Rational::subtract(const Rational &temp) const {
  45. Rational *r = new Rational();
  46. r->numerator = (this->numerator*temp.denominator - this->denominator*temp.numerator);
  47. r->denominator = (this->denominator * temp.denominator);
  48. return *r;
  49. }
  50.  
  51. const Rational Rational::multiply(const Rational &temp) const{
  52. Rational *r = new Rational();
  53. r->numerator = (this->numerator*temp.numerator);
  54. r->denominator = (this->denominator * temp.denominator);
  55. return *r;
  56. }
  57.  
  58. const Rational Rational::divide(const Rational &temp) const {
  59. Rational *r = new Rational();
  60. r->numerator = (this->numerator*temp.denominator);
  61. r->denominator = (this->denominator * temp.numerator);
  62. return *r;
  63. }
  64. int Rational::gcd(int n, int d) const{
  65. int temp;
  66. while (d!= 0) {
  67. temp = n;
  68. n = d;
  69. d = temp % d;
  70. }
  71. return n;
  72. }
  73.  
  74. void Rational::simplify(){
  75. this->numerator = this->numerator / gcd(numerator,denominator);
  76. this->denominator = this->denominator / gcd(numerator,denominator);
  77. return;
  78. }
  79.  
  80. void Rational::display() const{
  81. cout << this->numerator <<" / "<< this->denominator;
  82. }
  83.  
  84. Rational getRational();
  85. void displayResult(const string &, const Rational &, const Rational&, const Rational&);
  86.  
  87. int main() {
  88. Rational A, B, result;
  89. int choice;
  90.  
  91. cout << "Enter Rational A:" << endl;
  92. A = getRational();
  93. cout << endl;
  94.  
  95. cout << "Enter Rational B:" << endl;
  96. B = getRational();
  97. cout << endl;
  98.  
  99. cout << "Enter Operation (1 - 4):" << endl
  100. << "1 - Addition (A + B)" << endl
  101. << "2 - Subtraction (A - B)" << endl
  102. << "3 - Multiplication (A * B)" << endl
  103. << "4 - Division (A / B)" << endl
  104. << "5 - Simplify A" << endl;
  105. cin >> choice;
  106. cout << endl;
  107.  
  108. if (choice == 1) {
  109. result = A.add(B);
  110. displayResult("+", A, B, result);
  111. } else if (choice == 2) {
  112. result = A.subtract(B);
  113. displayResult("-", A, B, result);
  114. } else if (choice == 3) {
  115. result = A.multiply(B);
  116. displayResult("*", A, B, result);
  117. } else if (choice == 4) {
  118. result = A.divide(B);
  119. displayResult("/", A, B, result);
  120. } else if (choice == 5) {
  121. A.simplify();
  122. A.display();
  123. } else {
  124. cout << "Unknown Operation";
  125. }
  126. cout << endl;
  127.  
  128. return 0;
  129. }
  130.  
  131. Rational getRational() {
  132. int choice;
  133. int numer, denom;
  134.  
  135. cout << "Which Rational constructor? (Enter 1, 2, or 3)" << endl
  136. << "1 - 2 parameters (numerator & denominator)" << endl
  137. << "2 - 1 parameter (numerator)" << endl
  138. << "3 - 0 parameters (default)" << endl;
  139. cin >> choice;
  140. cout << endl;
  141.  
  142. if (choice == 1) {
  143. cout << "numerator? ";
  144. cin >> numer;
  145. cout << endl;
  146. cout << "denominator? ";
  147. cin >> denom;
  148. cout << endl;
  149. return Rational(numer, denom);
  150. } else if (choice == 2) {
  151. cout << "numerator? ";
  152. cin >> numer;
  153. cout << endl;
  154. return Rational(numer);
  155. } else {
  156. return Rational();
  157. }
  158. }
  159.  
  160. void displayResult(const string &op, const Rational &lhs, const Rational&rhs, const Rational &result) {
  161. cout << "(";
  162. lhs.display();
  163. cout << ") " << op << " (";
  164. rhs.display();
  165. cout << ") = (";
  166. result.display();
  167. cout << ")";
  168. }
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement