0% found this document useful (0 votes)
289 views6 pages

Clasa Rational

The document defines a rational number class with private data members for the numerator and denominator. It includes constructors, overloaded operators, and member functions for input/output streaming, addition, subtraction, multiplication, comparison, and assignment of rational numbers. The main function demonstrates creating and manipulating rational number objects, reading and sorting an array of rationals from a file.

Uploaded by

Iuginnn
Copyright
© © All Rights Reserved
We take content rights seriously. If you suspect this is your content, claim it here.
Available Formats
Download as DOCX, PDF, TXT or read online on Scribd
0% found this document useful (0 votes)
289 views6 pages

Clasa Rational

The document defines a rational number class with private data members for the numerator and denominator. It includes constructors, overloaded operators, and member functions for input/output streaming, addition, subtraction, multiplication, comparison, and assignment of rational numbers. The main function demonstrates creating and manipulating rational number objects, reading and sorting an array of rationals from a file.

Uploaded by

Iuginnn
Copyright
© © All Rights Reserved
We take content rights seriously. If you suspect this is your content, claim it here.
Available Formats
Download as DOCX, PDF, TXT or read online on Scribd
You are on page 1/ 6

#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];

You might also like