fork download
  1. #include <iostream>
  2. #include <algorithm>
  3.  
  4. struct Fraction {
  5. long long numerator;
  6. long long denominator;
  7. };
  8.  
  9. long long gcd(long long a, long long b) {
  10. while (b != 0) {
  11. long long temp = b;
  12. b = a % b;
  13. a = temp;
  14. }
  15. return a;
  16. }
  17.  
  18. Fraction simplifyFraction(Fraction frac) {
  19. long long commonGCD = gcd(abs(frac.numerator), frac.denominator);
  20. frac.numerator /= commonGCD;
  21. frac.denominator /= commonGCD;
  22. return frac;
  23. }
  24.  
  25. int main() {
  26. long long a, b, c, d;
  27. char ch, o;
  28.  
  29. while (std::cin >> a >> ch >> b >> o >> c >> ch >> d) {
  30. Fraction result;
  31.  
  32. if (o == '+') {
  33. result.numerator = a * d + b * c;
  34. result.denominator = b * d;
  35. } else if (o == '-') {
  36. result.numerator = a * d - b * c;
  37. result.denominator = b * d;
  38. }
  39.  
  40. Fraction simplifiedResult = simplifyFraction(result);
  41.  
  42. std::cout << simplifiedResult.numerator << "/" << simplifiedResult.denominator << std::endl;
  43. }
  44.  
  45. return 0;
  46. }
Success #stdin #stdout 0s 5304KB
stdin
1/2 + 3/4
4/5 - 7/3
3/2 + 5/6
7/6 - 1/6
3/2 - 3/2
stdout
5/4
-23/15
7/3
1/1
0/1