Welcome, guest! Login / Register - Why register?
Psst.. new poll here.
Psst.. new forums here.
Microsoft is blocking us again (TY IP Reputation!) so just use oauth login instead. :)

Paste

Pasted as C++ by anonymous ( 16 years ago )
#include <iostream>
#include <stdlib.h>
using namespace std;

inline int NOD(int a,int b)
 {
   a = abs(a);b = abs(b);
    while(a!=0 && b!=0)
    {
       if(a>=b) a=a%b;
           else b=b%a;
    }
    return a+b; // Одно - ноль
 }

class fraction
{
private:
  signed int* divider;
  int* denominator;
public:
  fraction(int, int);
  fraction();
  fraction(int);
  ~fraction();
  void print();
  fraction* reduction();
  void operator=(fraction& );
  bool operator==(fraction&);
  bool operator>(fraction& );
  bool operator>=(fraction& );
  bool operator<(fraction& );
  bool operator<=(fraction& );
  bool operator!=(fraction&);
  fraction* operator+(fraction& );
  fraction* operator-(fraction& );
  fraction* operator-();
  fraction* operator*(fraction&);
  fraction* operator/(fraction&);
  
};

fraction* fraction::reduction()
{
  fraction* a;
  int nod = NOD(*divider, *denominator);
  a = new fraction(*divider / nod, *denominator / nod);
  return a;
  
}


void fraction::print()
{
  cout<< *divider <<  "/" << *denominator << endl;
}

fraction::fraction()
{
  *divider = 0;
  *denominator = 1;
}

fraction::fraction(int a)
{
  *divider = a;
  *denominator = 1;
}


fraction::fraction(int div, int den)
{
  divider = new int;
  denominator = new int;
  *divider = div;
  *denominator = den;
};

fraction::~fraction()
{
  delete divider;
  delete denominator;
};

fraction* fraction::operator*(fraction& a)
{
  fraction *b;
  b = new fraction( *divider * *a.divider, *denominator * *a.denominator);
  return b->reduction();
}

fraction* fraction::operator/(fraction& a)
{
  fraction *b;
  b = new fraction( *divider * *a.denominator, *denominator * *a.divider);
  return b->reduction();
}


fraction* fraction::operator-()
{
  fraction *b;
  return b = new fraction(-*divider, *denominator);
}

void fraction::operator=(fraction& a)
{
  *divider = *a.divider;
  *denominator = *a.denominator;
}

fraction* fraction::operator+(fraction& a)
{
  //int newdiv, newden;
  fraction* b;
  //b = new fraction(0,1);
  
  if (*denominator == *a.denominator)
    {  
      b = new fraction(*divider + *a.divider,  *denominator);
    }
  else
    {
      b = new fraction(*denominator * *a.divider +
         *divider * *a.denominator,
         *denominator * *a.denominator);
    }
  return b->reduction();
}
fraction* fraction::operator-(fraction& a)
{
  fraction* b;
  if (*denominator == *a.denominator)
    {
      b = new fraction(*divider - *a.divider, *denominator);
    }
  else
    {
      b = new fraction(*divider * *a.denominator - *denominator * *a.divider, 
         *denominator * *a.denominator);
    }
  return b->reduction();
}

//операторы сравнения
bool fraction::operator ==(fraction& a)
{
  int nod1 = NOD(*divider, *denominator);
  int nod2 = NOD(*a.divider, *a.denominator);
  if ((*divider/nod1 == *a.divider/nod2) && (*denominator/nod1 == *a.denominator/nod2))
    return true;
  else
    return false;
  //сделать через НОД
};


bool fraction::operator >(fraction& a)
{
   if ((*divider * *a.denominator) > (*denominator * *a.divider))
    return true;
  else
    return false;
};

bool fraction::operator >=(fraction& a)
{
  if (*this == a)
    return true;
  else if (*this > a )
     return true;
  else
    return false;
};

bool fraction::operator <(fraction& a)
{
  if (!(*this > a))
    return true;
  else
    return false;
}

bool fraction::operator <=(fraction& a)
{
  if ((*this < a) || (*this == a))
    return true;
  else
    return false;
};
bool fraction::operator !=(fraction& a)
{
  if (!(*this == a))
    return true;
  else
    return false;
};

int main()
{
  fraction *a, *b, *c, *d;
  a = new fraction(1, 524);
  b = new fraction(20, 513);
  (*a + *b)->print();
  (*a - *b)->print();
  (*a * *b)->print();
  (*a / *b)->print();
  ( - *b)->print();
  (*a + (-(*b)))->print();
}

 

Revise this Paste

Your Name: Code Language: