JosepRivaille

P85696: Racionals (1)

May 7th, 2015
2,087
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
C++ 0.85 KB | None | 0 0
  1. #include <iostream>
  2. using namespace std;
  3.  
  4.  
  5. struct Racional {
  6.     int num, den;
  7. };
  8.  
  9. Racional racional(int n, int d) {
  10.     Racional rac_norm;
  11.     if (n == 0) {
  12.         rac_norm.den = 1;
  13.         rac_norm.num = 0;
  14.         return rac_norm;
  15.     }
  16.     else {
  17.         bool negar;
  18.         if (n*d > 0) {
  19.             if (n < 0) {
  20.                 n *= -1;
  21.                 d *= -1;
  22.             }
  23.             negar = false;
  24.         }
  25.         else {
  26.             if (d < 0) d *= -1;
  27.             else n *= -1;
  28.             negar = true;
  29.            
  30.         }
  31.         int petit;
  32.         if (n < d) petit = n;
  33.         else petit = d;
  34.         for (int div = petit; div >= 2; --div) {
  35.             if (n%div == 0 && d%div == 0) {
  36.                 n /= div;
  37.                 d /= div;
  38.             }
  39.         }
  40.         if (not negar) rac_norm.num = n;
  41.         else if (negar) rac_norm.num = n * -1;
  42.         rac_norm.den = d;
  43.         return rac_norm;
  44.     }
  45. }
  46.  
  47.  
  48. int main() {
  49.     int n, d;
  50.     cin >> n >> d;
  51.     Racional frac_norm = racional(n, d);
  52.     cout << frac_norm.num << "/" << frac_norm.den << endl;
  53. }
Advertisement
Add Comment
Please, Sign In to add comment