С++
Нужна помощь. Я не совсем понимаю как выводить в main перегрузку операторов. Возможно я не совсем понятно поставил вопрос, но в общем, нужна помощь с написание main для этого кода:
class fraction
{
private:
int num;
int denum;
public:
fraction(int n , int d): num(n),denum(d){}
ostream& operator«(ostream& out, const fraction& f)
{
out « f.num«"/"«f.denum;
return out;
}
void swap (int *a, int *b)
{
int f;
f= *a;
*a = *b;
*b = f;
}
int NOD(int a, int b)
{
int div;
if (a<0)
a=-a;
if (b<0)
b=-b;
while (a != b)
{
if (a < b)
swap(&a,&b);
a = a - b;
}
div = a;
return div;
}
fraction operator+(const fraction& f)
{
int n = num*f.denum + f.num * denum;
int d = denum * f.num;
return fraction(n,d);
}
fraction operator+(const fraction& f, int arg)
{
int n = arg * f.denum + f.num;
int d = f.denum;
return fraction(n,d);
}
fraction operator-(const fraction&f)
{
int n = (num*f.denum) - (f.num *denum);
int d = denum * f.denum;
return fraction(n,d);
}
fraction operator-(const fraction&f, int arg)
{
int n = arg*denum - num;
int d = denum;
return fraction(n,d);
}
fraction operator-(const fraction&f, int arg)
{
int n = num - arg*denum ;
int d = denum;
return fraction(n,d);
} 7
fraction operator*(const fraction& f)
{
int n = num * f.num;
int d = denum * f.denum;
return fraction(n,d);
}
fraction operator*(const fraction& f, int arg)
{
int n = arg * num;
int d = denum;
return fraction(n,d);
}
fraction operator/(const fraction& f)
{
int n = num * f.denum;
int d = denum * f.num;
return fraction(n,d);
}
fraction operator/(const fraction& f, int arg)
{
int n = num;
int d = denum * arg;
return fraction(n,d);
}
fraction operator/(const fraction& f, int arg)
{
int n = denum * arg;
int d = num;
return fraction(n,d);
}
fraction operator^(const fraction& f)
{
int n = num*num;
int d = denum*denum;
return fraction(n,d);
}
fraction operator~(const fraction& f)
const{
int div = NOD(num,denum);
return(num/div, denum/div);
}
operator double()
{
return (double)num/denum;
}
};
Answers & Comments
Verified answer
Ответ:
Где то я уже отвечал на этот вопрос, вообще это странно выводить main (никто так не делает) но ладно, вот вам код ниже
Объяснение:
#include <iostream>
using namespace std;
class fraction
{
private:
int num;
int denum;
public:
fraction(int n , int d): num(n), denum(d){}
friend ostream& operator<<(ostream& out, const fraction& f)
{
out << f.num << "/" << f.denum;
return out;
}
void swap (int *a, int *b)
{
int f;
f= *a;
*a = *b;
*b = f;
}
int NOD(int a, int b)
{
int div;
if (a<0)
a=-a;
if (b<0)
b=-b;
while (a != b)
{
if (a < b)
swap(&a,&b);
a = a - b;
}
div = a;
return div;
}
fraction operator+(const fraction& f)
{
int n = num*f.denum + f.num * denum;
int d = denum * f.num;
return fraction(n,d);
}
fraction operator+(const fraction& f, int arg)
{
int n = arg * f.denum + f.num;
int d = f.denum;
return fraction(n,d);
}
fraction operator-(const fraction&f)
{
int n = (num*f.denum) - (f.num *denum);
int d = denum * f.denum;
return fraction(n,d);
}
fraction operator-(const fraction&f, int arg)
{
int n = arg*denum - num;
int d = denum;
return fraction(n,d);
}
fraction operator-(int arg, const fraction&f)
{
int n = arg*denum - num;
int d = denum;
return fraction(n,d);
}
fraction operator*(const fraction& f)
{
int n = num * f.num;
int d = denum * f.denum;
return fraction(n,d);
}
fraction operator*(int arg, const fraction& f)
{
int n = arg * f.num;
int d = f.denum;
return fraction(n,d);
}
fraction operator/(const fraction& f)
{
int n = num * f.denum;
int d = denum * f.num;
return fraction(n,d);
}
fraction operator/(int arg, const fraction& f)
{
int n = f.denum * arg;
int d = f.num;
return fraction(n,d);
}
fraction operator/(const fraction& f, int arg)
{
int n = num;
int d = denum * arg;
return fraction(n,d);
}
fraction operator^(const fraction& f)
{
int n = num*num;
int d = denum*denum;
return fraction(n,d);