Форум программистов, компьютерный форум CyberForum.ru

Возможность для 2**I отрабатывать в виде вызова mypow(2, I) - C++

Восстановить пароль Регистрация
 
xSCJx
22 / 19 / 1
Регистрация: 24.12.2012
Сообщений: 435
11.04.2013, 21:34     Возможность для 2**I отрабатывать в виде вызова mypow(2, I) #1
Привет всем. В книге Страуструпа, есть такая задачка:
Определите класс Index для хранения индекса функции возведения в степень mypow(double, Index).
Найдите возможность для 2**I отрабатывать в виде вызова mypow(2, I).
По сложности стоит (*1.5), т.е не сложная. Но я что то не могу её решить, кроме как так:
C++
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
#include <iostream>
 
class Index
{
    int _idx;
 
    double mypow(double val, Index idx) { return powf(val, idx._idx); }
 
public:
    Index(int i = 0): _idx(i) { }
 
    friend double operator* (double, Index);
};
 
double operator* (double val, Index idx)
{
    return idx.mypow(val, idx);
}
 
#define Index Index*
 
int main()
{
    Index I;
 
    2 ** I;
 
    system("PAUSE");
    return 0;
}
Мне ничего в голову не приходит, понятно конечно что это полная чушь, которая даже не будет работать. Подскажите пожалуйста. Зарание спасибо.
Similar
Эксперт
41792 / 34177 / 6122
Регистрация: 12.04.2006
Сообщений: 57,940
11.04.2013, 21:34     Возможность для 2**I отрабатывать в виде вызова mypow(2, I)
Посмотрите здесь:

C++ Библиотека для работы с большими числами, возможность факторизации
Указатель на привязанную функцию можно использовать только для вызова функции C++
C++ нужно чтобы функция располагалась до ее вызова, после ее вызова и в другом файле. Как это сделать?
Пофиксить код для коректного вызова функции C++
C++ Подсчет числа слов в тексте. Слишком много аргументов для вызова
Написание библиотеки в С++ для вызова в C# C++
Функция для вызова других функций C++
Использование указателя для вызова по ссылке C++

Искать еще темы с ответами

Или воспользуйтесь поиском по форуму:
После регистрации реклама в сообщениях будет скрыта и будут доступны все возможности форума.
anmartex
...
 Аватар для anmartex
1699 / 1192 / 494
Регистрация: 12.02.2013
Сообщений: 1,978
12.04.2013, 05:40     Возможность для 2**I отрабатывать в виде вызова mypow(2, I) #2
SERUYBKR, define-ом вы себе выстрелили себе в ногу. Посмотрите, вы объявили Index* I, т.е. указатель. А на что указывает ваш указатель? Ещё по поводу вашего метода mypow, вы зачем вторым параметром объект того же класса передаёте?
Я бы сделал так:
C++
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
#include <iostream>
#include <cmath>
 
class Index
{
    protected:
        int _idx;
 
    public:
        Index(int i = 0): _idx(i) { }
 
        double mypow(double val) const
        {
            return powf(val, _idx);
        }
 
        const Index& operator * () const
        {
            return *this;
        }
};
 
double operator* (double val, const Index& idx)
{
    return idx.mypow(val);
}
 
int main()
{
    Index I(10);
 
    std::cout << (2 ** I) << std::endl;
 
    return 0;
}
Результат выполнения на liveworkspace.org
xSCJx
22 / 19 / 1
Регистрация: 24.12.2012
Сообщений: 435
12.04.2013, 15:14  [ТС]     Возможность для 2**I отрабатывать в виде вызова mypow(2, I) #3
anmartex, спасибо.
Yandex
Объявления
12.04.2013, 15:14     Возможность для 2**I отрабатывать в виде вызова mypow(2, I)
Ответ Создать тему
Опции темы

Текущее время: 15:30. Часовой пояс GMT +3.
КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin® Version 3.8.9
Copyright ©2000 - 2016, vBulletin Solutions, Inc.
Рейтинг@Mail.ru