#include <iostream>
#include<fstream>
using namespace std;
class rational
private:
int x,y;
void simplifica();
public:
rational(int u=0,int v=1);
rational(rational&r);
friend istream &operator>>(istream &is, rational&r);
friend ostream &operator<<(ostream &os, rational&r);
friend rational operator+(rational &r1,rational &r2);
friend int operator > (rational r1,rational r2);
friend rational operator*(rational &r1,rational &r2);
rational& operator=(const rational &r);
friend rational operator-(rational &r);
friend int operator==(rational &r1,rational &r2);
};
void rational::simplifica()
int u=x,v=y,r=x%y;
while(r)
u=v;
v=r;
r=u%v;
x=x/v;
y=y/v;
rational::rational(int u,int v)
x=u;
y=v;
simplifica();
rational::rational(rational&r)
x=r.x;
y=r.y;
istream & operator>>(istream &is, rational&r)
is>>r.x>>r.y;
r.simplifica();
return is;
}
ostream & operator<<(ostream &os, rational&r)
os<<r.x<<' '<<r.y<<endl;
return os;
rational operator+(rational &r1,rational &r2)
int u,v;
u=r1.x*r2.y+r2.x*r1.y;
v=r1.y*r2.y;
rational r(u,v);
return r;
int operator > (rational r1,rational r2)
if((double)r1.x/(double)r1.y>(double)r2.x/(double)r2.y)
return 1;
return 0;
rational operator*(rational &r1,rational &r2)
int u,v;
u=r1.x*r2.x;
v=r1.y*r2.y;
rational r(u,v);
return r;
rational& rational::operator=(const rational &r)
x=r.x;
y=r.y;
return *this;
rational operator-(rational&r)
rational c(-r.x,r.y);
return c;
int operator==(rational &r1,rational &r2)
if(r1.x*r2.y==r2.x*r1.y)
return 1;
return 0;
ifstream f("date.in");
ofstream g("date.out");
rational r[100];
int main()
rational a(2,3),b(10,30),s,c(a);
cout<<"a="<<a<<endl;
cout<<"b="<<b<<endl;
// cin>>a>>b;
s=a+b;
cout<<"suma="<<s<<'\n';
s=a*b;
cout<<"prod="<<s<<'\n';
s=-a;
cout<<"-a="<<s<<'\n';
if(a==b)
cout<<"egale\n";
else cout<<"diferite\n";
int n,i,j;
f>>n;
for(i=0; i<=n; i++)
f>>r[i];
for(i=0; i<n-1; i++)
for(j=i+1; j<n; j++)
if(r[i]>r[j])
{
rational aux;
aux=r[i];
r[i]=r[j];
r[j]=aux;
for(i=0; i<n; i++)
g<<r[i];