Advertisement
Guest User

CFraction.h

a guest
Nov 26th, 2014
136
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
C++ 3.72 KB | None | 0 0
  1. #include <iostream>
  2. using namespace std;
  3.  
  4. class Cfraction
  5. {
  6. private:
  7.     short up;
  8.     short down;
  9.     short integer;
  10. public:
  11.     Cfraction ()
  12.     {
  13.         setInteger(0);
  14.         setUp (0);
  15.         setDown (1);
  16.     }
  17.     Cfraction (short _up, short _down)
  18.     {
  19.         setInteger(0);
  20.         setUp (_up);
  21.         setDown (_down);
  22.     }
  23.     void setUp (short _up) {up = _up;}
  24.     void setDown (short _down) {down = _down;}
  25.     void setInteger (short _int) {integer = _int;}
  26.     void Print ()
  27.     {
  28.         Check ();
  29.         cout << integer << "   " << up << "/" << down << endl;
  30.     }
  31.     void Check ()
  32.     {
  33.         for (int i = 0; i < 3; i++)
  34.         {
  35.             for (int j = 1000; j > 0; j--)
  36.             {
  37.                 if (up % j == 0 && down % j == 0)
  38.                 {
  39.                     up /= j;
  40.                     down /= j;
  41.                 }
  42.             }
  43.         }
  44.         if (up >= down)
  45.         {
  46.             integer = up/down;
  47.             up%=down;
  48.         }
  49.         if (up == 0)
  50.             down = 1;
  51.     }
  52.     void Convert (Cfraction &fr)
  53.     {
  54.         fr.up += fr.integer * fr.down;
  55.         fr.integer = 0;
  56.     }
  57.  
  58.     /////////////+\\\\\\\\\\\\\
  59.  
  60.     Cfraction operator + (Cfraction &fr)
  61.     {
  62.         Convert (fr);
  63.         Cfraction tmp;
  64.         tmp.down = this->down * fr.down;
  65.         tmp.up = (this->down * fr.up) + (this->up * fr.down);
  66.         return tmp;
  67.     }
  68.  
  69.     Cfraction operator + (int _int)
  70.     {
  71.         Cfraction rgt;
  72.         rgt.integer = _int;
  73.         this->Convert (rgt);
  74.         Cfraction tmp;
  75.         tmp.down = this->down * rgt.down;
  76.         tmp.up = (this->down * rgt.up) + (this->up * rgt.down);
  77.         return tmp;
  78.     }
  79.  
  80.     friend Cfraction operator + (int _int, Cfraction &fr)
  81.     {
  82.         Cfraction tmp;
  83.         Cfraction lft;
  84.         lft.integer = _int;
  85.  
  86.  
  87.         lft.up += lft.integer * lft.down;
  88.         lft.integer = 0;
  89.  
  90.  
  91.         tmp.down = lft.down * fr.down;
  92.         tmp.up = (lft.down * fr.up) + (lft.up * fr.down);
  93.         return tmp;
  94.     }
  95.  
  96.     /////////////*\\\\\\\\\\\\\
  97.  
  98.     Cfraction operator * (Cfraction &fr)
  99.     {
  100.         Convert (fr);
  101.         Cfraction tmp;
  102.         tmp.up = this->up * fr.up;
  103.         tmp.down = this->down * fr.down;
  104.         return tmp;
  105.     }
  106.  
  107.  
  108.     Cfraction operator * (int _int)
  109.     {
  110.         Cfraction tmp;
  111.         Cfraction fr;
  112.         fr.integer = _int;
  113.         Convert (fr);
  114.         tmp.up = this->up * fr.up;
  115.         tmp.down = this->down * fr.down;
  116.         return tmp;
  117.     }
  118.  
  119.     friend Cfraction operator * (int _int, Cfraction &fr)
  120.     {
  121.         Cfraction tmp;
  122.         Cfraction lft;
  123.         lft.integer = _int;
  124.  
  125.  
  126.         lft.up += lft.integer * lft.down;
  127.         lft.integer = 0;
  128.  
  129.         tmp.up = lft.up * fr.up;
  130.         tmp.down = lft.down * fr.down;
  131.         return tmp;
  132.  
  133.     }
  134.  
  135.     //////////////-\\\\\\\\\\\\\\
  136.  
  137.     Cfraction operator - (Cfraction &fr)
  138.     {
  139.         Convert (fr);
  140.         Cfraction tmp;
  141.         tmp.down = this->down * fr.down;
  142.         tmp.up = (this->down * fr.up) - (this->up * fr.down);
  143.         return tmp;
  144.     }
  145.  
  146.     Cfraction operator - (int _int)
  147.     {
  148.         Cfraction tmp;
  149.         Cfraction fr;
  150.         fr.integer = _int;
  151.         Convert (fr);
  152.  
  153.         tmp.down = this->down * fr.down;
  154.         tmp.up = (this->down * fr.up) - (this->up * fr.down);
  155.  
  156.         return tmp;
  157.     }
  158.  
  159.     friend Cfraction operator - (int _int, Cfraction &fr)
  160.     {
  161.         Cfraction tmp;
  162.         Cfraction lft;
  163.  
  164.         lft.integer = _int;
  165.         lft.Convert(lft);
  166.  
  167.         tmp.down = lft.down * fr.down;
  168.         tmp.up = (lft.down * fr.up) - (lft.up * fr.down);
  169.         return tmp;
  170.     }
  171.  
  172.     /////////// / \\\\\\\\\\\\\\\\\\\\\\\
  173.  
  174.     Cfraction operator / (Cfraction &fr)
  175.     {
  176.         Convert (fr);
  177.         Cfraction tmp;
  178.         tmp.up = this->up * fr.down;
  179.         tmp.down = this->down * fr.up;
  180.         return tmp;
  181.     }
  182.  
  183.     Cfraction operator / (int _int)
  184.     {
  185.         Cfraction tmp;
  186.         Cfraction fr;
  187.         fr.integer = _int;
  188.         Convert (fr);
  189.         tmp.up = this->up * fr.down;
  190.         tmp.down = this->down * fr.up;
  191.         return tmp;
  192.     }
  193.  
  194.     friend Cfraction operator / (int _int, Cfraction fr)
  195.     {
  196.         Cfraction tmp;
  197.         Cfraction lft;
  198.         lft.integer = _int;
  199.         lft.Convert(lft);
  200.         tmp.up = lft.up * fr.down;
  201.         tmp.down = lft.down * fr.up;
  202.         return tmp;
  203.     }
  204.  
  205.     Cfraction operator ++ ()
  206.     {
  207.         this->integer++;
  208.         return *this;
  209.     }
  210.  
  211.     Cfraction operator -- ()
  212.     {
  213.         this->integer--;
  214.         return *this;
  215.     }
  216. };
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement