operator overload 2
#include <iostream>
using namespace std;
class fraction{
private:
int numerator;
int denominator;
public:
fraction(int numerator,int denominator){
this->numerator=numerator;//
this->denominator=denominator;
}
void print(){
cout<<this->numerator<<"/"<<this->denominator<<endl;
}
void simplify(){
int gcd=1;
for(int i=1;i<min(this->numerator,this->denominator);i++){
if(this->numerator%i==0 && this->denominator%i==0){
gcd=i;
}
}
this->numerator=this->numerator/gcd;
this->denominator=this->denominator/gcd;
cout<<this->numerator<<"/"<<this->denominator<<endl;
}
fraction operator+(fraction f2) const{
int lcm=f2.denominator*this->denominator;
int x=lcm/this->denominator;
int y=lcm/f2.denominator;
int num=(this->numerator*x)+(y*f2.numerator);
fraction f3(num,lcm);
return f3;
//this->denominator=lcm;
}
bool operator==(fraction f2) const{
return(numerator==f2.numerator && denominator==f2.denominator);
}
//cout<<this->numerator<<"/"<<this->denominator<<endl;
fraction operator*(fraction f2) const{
int num=numerator*f2.numerator;
int den=denominator*f2.denominator;
fraction f3(num,den);
return f3;
}
fraction& operator++(){//instead of buffer, we change by reference
this->numerator=numerator+denominator;
this->denominator=denominator;
return *this;
}
};
int main() {
fraction f1(10,5);
f1.print();
++f1;
f1.print();
fraction f3=++(++f1);
f3.print();
f1.print();
return 0;
}
Comments
Post a Comment