JosepRivaille

P53361: Racionals (3)

May 7th, 2015
736
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
C++ 1.08 KB | None | 0 0
  1. #include <iostream>
  2. using namespace std;
  3.  
  4. struct Racional {
  5.     int num,den;
  6. };
  7.  
  8. int mcd(int a, int b) {
  9.     if (b==0) return a;
  10.     return mcd(b,a%b);
  11. }
  12.  
  13. Racional racional(int n, int d) {
  14.     Racional res;
  15.     res.num = n / mcd(n,d);
  16.     res.den = d / mcd(n,d);
  17.     if (res.num==0) res.den = 1;
  18.     if (res.den<0) {
  19.         res.den*=-1;
  20.         res.num*=-1;
  21.     }
  22.     return res;
  23. }
  24.  
  25. Racional suma(const Racional& a, const Racional& b) {
  26.     int mcm = (a.den*b.den)/mcd(a.den, b.den);
  27.     int n1 = a.num*(mcm/a.den);
  28.     int n2 = b.num*(mcm/b.den);
  29.     return racional (n1+n2, mcm);
  30. }
  31.  
  32. Racional resta(const Racional& a, const Racional& b) {
  33.     int mcm = (a.den*b.den)/mcd(a.den, b.den);
  34.     int n1 = a.num*(mcm/a.den);
  35.     int n2 = b.num*(mcm/b.den);
  36.     return racional (n1-n2, mcm);
  37. }
  38.  
  39. Racional producte(const Racional& a, const Racional& b) {
  40.     int n = a.num*b.num;
  41.     int d = b.den*a.den;
  42.     return racional(n, d);
  43. }
  44.  
  45. Racional divisio(const Racional& a, const Racional& b) {
  46.     int n = a.num*b.den;
  47.     int d = a.den*b.num;
  48.     return racional(n, d);
  49.        
  50. }
  51.  
  52. void suma_un(Racional& r) {
  53.     r.num += r.den;
  54. }
Advertisement
Add Comment
Please, Sign In to add comment