Информатика, вопрос задал kumiho9fox , 1 год назад

С++
Нужна помощь. Я не совсем понимаю как выводить в 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;
}
};​

Ответы на вопрос

Ответил pupkinll2016
0

Ответ:

Где то я уже отвечал на этот вопрос, вообще это странно выводить 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);

Новые вопросы