Справочник функций

Ваш аккаунт

Войти через: 
Забыли пароль?
Регистрация
Информацию о новых материалах можно получать и без регистрации:

Почтовая рассылка

Подписчиков: -1
Последний выпуск: 19.06.2015

operator ^ С++

38K
13 декабря 2008 года
ДмитрийизОдессы
9 / / 26.07.2008
Задание: реализовать оператор возведение в степень в классе <Дробь>.
До класса <Дробь> реализовывал оператор степень натурального числа, в классе с одним полем:

Код:
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";
    }

};


А вот в классе <Дробь> ни как не получается:

Код:
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;
    }

};
842
13 декабря 2008 года
sigmov
301 / / 16.09.2008
[QUOTE=ДмитрийизОдессы;269890]Задание: реализовать оператор возведение в степень в классе <Дробь>.
До класса <Дробь> реализовывал оператор степень натурального числа, в классе с одним полем:

А вот в классе <Дробь> ни как не получается:

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));}
};
38K
13 декабря 2008 года
ДмитрийизОдессы
9 / / 26.07.2008
Спасибо за предложение, в принципе конструктор существует с параметрами в классе, просто не показал.
Ошибка, забыл указать, что компилятор говорит -
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
не возможно.
842
14 декабря 2008 года
sigmov
301 / / 16.09.2008
Операция деления с остатком применима только для целых чисел.
Если хотите сделать хоть одно вещественным - нужно будет свою функцию описать.(Или поисчите в "math.h" что то типа mod() или fmod(), но я не уверен в ее наличии).

А вот pow() как раз работает и с вещественными и с целыми. Только оба должны быть либо целыми либо вещественными.
допустим:
double d=1.2;
int n=3;
pow(d,(double)n).
Реклама на сайте | Обмен ссылками | Ссылки | Экспорт (RSS) | Контакты
Добавить статью | Добавить исходник | Добавить хостинг-провайдера | Добавить сайт в каталог