fork download
  1. #include<iostream>
  2. #include<stdio.h>
  3. using namespace std;
  4.  
  5. class rational
  6. {
  7. int n,d;
  8. public:
  9. rational() : n(1), d(1) {};
  10. ~rational(){};
  11.  
  12. void getData()
  13. {
  14. cout<<"\nEnter a numerator: ";
  15. cin>>n;
  16. cout<<"Enter a denominator: ";
  17. cin>>d;
  18. cout<<endl;
  19.  
  20. while(d==0)
  21. {
  22. cout<<"Please enter a denominator: ";
  23. cin>>d;
  24. }
  25.  
  26. while(d<0)
  27. {
  28. n *= -1;
  29. d *= -1;
  30. }
  31. }
  32.  
  33. int GCD(int n1, int remainder)
  34. {
  35. if(remainder==0)
  36. return(n1);
  37. else { return(GCD(remainder,n1%remainder)); }
  38. }
  39.  
  40. void reduce(int &n,int &d)
  41. {
  42. int rdc = 0;
  43. if(d>n)
  44. rdc = GCD(d,n);
  45. else if(d<n)
  46. rdc = GCD(n,d);
  47. else
  48. rdc = GCD(n,d);
  49. n /= rdc;
  50. d /= rdc;
  51. cout<<n<<"/"<<d<<endl;
  52. }
  53.  
  54. void operator +(rational c1)
  55. {
  56. rational temp;
  57. temp.n=(n*c1.d)+(c1.n*d);
  58. temp.d=c1.d*d;
  59. reduce(temp.n,temp.d);
  60. }
  61.  
  62. void operator -(rational c1)
  63. {
  64. rational temp;
  65. temp.n=(n*c1.d)-(c1.n*c1.d);
  66. temp.d=c1.d*d;
  67. reduce(temp.n,temp.d);
  68. }
  69.  
  70. void operator *(rational c1)
  71. {
  72. rational temp;
  73. temp.n=n*c1.n;
  74. temp.d=d*c1.d;
  75. reduce(temp.n,temp.d);
  76. }
  77.  
  78. };
  79.  
  80. int main()
  81. {
  82. rational c1, c2;
  83. int n,x;
  84. char cr;
  85. cin>>x;
  86. for(int contador=0; contador<x; contador++){
  87. if(contador<x){
  88. c1.getData();
  89. c2.getData ();
  90. }
  91. }
  92. cin>>cr;
  93. switch(cr)
  94. {
  95. case '+':
  96. c1+c2;
  97. cin.get();
  98. return 0;
  99. case '-':
  100. c1-c2;
  101. cin.get();
  102. return 0;
  103. case '*':
  104. c1*c2;
  105. cin.get();
  106. return 0;
  107. default:
  108. cout<<endl;
  109. return 0;
  110. }
  111.  
  112. cin.get();
  113. return 0;
  114. }
  115.  
Success #stdin #stdout 0s 4276KB
stdin
1
2
1
2
1
+
stdout
Enter a numerator: Enter a denominator: 

Enter a numerator: Enter a denominator: 
4/1