I am trying to implement a Fraction class, which calculates the product of two fractions. It compiles fine but doesn't accept input and abruptly ends.
Here is my code:
#include<iostream>
#include<cmath>
using namespace std;
class Fraction{
int m_numerator{0},m_denominator{1};
public:
Fraction(int numerator=0,int denominator=1):m_numerator{numerator},m_denominator{denominator}{
}
friend Fraction operator*(const Fraction &f1,const Fraction &f2);
friend Fraction operator*(const Fraction &f,int n);
friend Fraction operator*(int n,const Fraction &f);
friend ostream &operator<<(ostream &out,const Fraction &f){
out<<f.m_numerator<<'/'<<f.m_denominator;
return out;
}
friend istream &operator>>(istream &in,const Fraction &f);
};
istream &operator>>(istream &in,const Fraction &f){
in>>f.m_numerator;
in>>f.m_denominator;
return in;
}
Fraction operator*(const Fraction &f1,const Fraction &f2){
return Fraction{f1.m_numerator*f2.m_numerator,f1.m_denominator*f2.m_denominator};
}
Fraction operator*(const Fraction &f,int n){
return Fraction(n*f.m_numerator,f.m_denominator);
}
Fraction operator*(int n,const Fraction &f){
return Fraction(n*f.m_numerator,f.m_denominator);
}
int main(){
Fraction f1;
cin>>f1;
Fraction f2;
cin>>f2;
std::cout << f1 << " * " << f2 << " is " << f1 * f2 << '\n';
return 0;
}
Can anyone please tell me where I am wrong?