class Int
{
private:
int m_value;
public:
Int operator ^ (Int a)
{
Int res=1;
for(int i=1; i<=a.m_value; i++)
{
res *= this->m_value;
}
return res;
}
void Show()
{
cout<<m_value<<"\n";
}
};
operator ^ С++
До класса <Дробь> реализовывал оператор степень натурального числа, в классе с одним полем:
Код:
А вот в классе <Дробь> ни как не получается:
Код:
class Fraction
{
private:
int numerator;
int denomorator;
public:
void Degree_num (Fraction res, int d)
{
for(int i=1; i<=d; i++)
{
res.numerator *= this->numerator;
}
}
void Degree_denom (Fraction res, int d)
{
for(int i=1; i<=d; i++)
{
res.denomorator *= this->denomorator;
}
}
Fraction operator ^(int d)
{
Fraction res (Degree_num(this->numerator, d),
Degree_denom(this->denomorator, d));
return res;
}
};
{
private:
int numerator;
int denomorator;
public:
void Degree_num (Fraction res, int d)
{
for(int i=1; i<=d; i++)
{
res.numerator *= this->numerator;
}
}
void Degree_denom (Fraction res, int d)
{
for(int i=1; i<=d; i++)
{
res.denomorator *= this->denomorator;
}
}
Fraction operator ^(int d)
{
Fraction res (Degree_num(this->numerator, d),
Degree_denom(this->denomorator, d));
return res;
}
};
До класса <Дробь> реализовывал оператор степень натурального числа, в классе с одним полем:
А вот в классе <Дробь> ни как не получается:
Fraction res (Degree_num(this->numerator,d),Degree_denom(this->denomorator, d));
- Вот она ошибка - обращение к отсутствующему конструктору.
Мое предложение:
Код:
class Fraction
{
private:
int numerator;
int denomorator;
public:
void pow_num(int d){ pow(this->numerator,d);}
void pow_denom(int d){ pow(this->denomorator,d);}
Fraction(int _numerator,int _denomorator):numerator(_numerator),denomorator(_denomorator){}
Fraction operator ^(int d){ return Fraction(pow(this->numerator,d),pow(this->denomorator,d));}
};
{
private:
int numerator;
int denomorator;
public:
void pow_num(int d){ pow(this->numerator,d);}
void pow_denom(int d){ pow(this->denomorator,d);}
Fraction(int _numerator,int _denomorator):numerator(_numerator),denomorator(_denomorator){}
Fraction operator ^(int d){ return Fraction(pow(this->numerator,d),pow(this->denomorator,d));}
};
Ошибка, забыл указать, что компилятор говорит -
1) error C2664: 'Fraction:: _Degree_denom' : cannot convert parameter 1 from 'int' to 'Fraction';
2) error C2664: 'Fraction::_Degree_num' : cannot convert parameter 1 from 'int' to 'Fraction';
Над pow, думал, но мне нужен int, сокращение дроби в конце провожу, и условие
Код:
if(denomorator%i==0&&numerator%i==0) при double denomoratar, numerator
Если хотите сделать хоть одно вещественным - нужно будет свою функцию описать.(Или поисчите в "math.h" что то типа mod() или fmod(), но я не уверен в ее наличии).
А вот pow() как раз работает и с вещественными и с целыми. Только оба должны быть либо целыми либо вещественными.
допустим:
double d=1.2;
int n=3;
pow(d,(double)n).