Advertisement
Not a member of Pastebin yet?
Sign Up,
it unlocks many cool features!
- #include <iostream>;
- using namespace std;
- class fraction
- {
- private:
- int num, deno;
- public:
- fraction()
- {
- num = 1;
- deno = 1;
- }
- fraction (int l, int y)
- {
- num = l;
- deno = y;
- }
- void operator=(const fraction& f)
- {
- num=f.num;
- deno=f.deno;
- }
- void shorten();
- friend istream& operator>>(istream& is,fraction& ft); //nhap
- friend ostream& operator<<(ostream& os,const fraction& ft); //xuat
- //cac toan tu so sanh
- friend operator == (const fraction& ,const fraction& );
- friend operator != (const fraction& ft1,const fraction& ft2);
- friend operator > (const fraction& ft1,const fraction& ft2);
- friend operator < (const fraction& ft1,const fraction& ft2);
- };
- istream& operator>>(istream& is,fraction& f)
- {
- cout<<" Enter numerator: ";
- is>>f.num;
- cout<<" Enter denominator: ";
- do
- {
- if(f.deno==0)
- cout<<"Fraction error, try again: ";
- is>>f.deno;
- }
- while(f.deno==0);
- if(f.deno<0) //doi dau
- {
- f.num=-f.num;
- f.deno=-f.deno;
- }
- f.shorten();
- return is;
- }
- ostream& operator<<(ostream& os,const fraction& f)
- {
- {
- if(f.num==0)
- os<<"\nFraction =0"<<endl;
- if(f.num==f.deno)
- os<<"\nFraction =1"<<endl;
- else
- os<<"\nFraction ="<<f.num<<"/"<<f.deno<<endl;
- }
- return os;
- }
- // ham rut gon
- int divisor(int a,int b)
- {
- int x;
- while(b!=0)
- {
- x=a%b;
- a=b;
- b=x;
- }
- return a;
- }
- void fraction::shorten()
- {
- if(deno<0)
- {
- num=-num;
- deno=-deno;
- }
- int u=divisor(num,deno);
- num=num/u;
- deno=deno/u;
- }
- int main()
- {
- fraction a,b;
- cout<<"Enter fraction A:\n";
- cin>>a;
- cout<<"Enter fraction B:\n";
- cin>>b;
- cout<<a;
- cout<<b;
- }
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement