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

С++ для начинающих

Войти
Регистрация
Восстановить пароль
 
xSCJx
22 / 19 / 1
Регистрация: 24.12.2012
Сообщений: 435
#1

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

11.04.2013, 21:34. Просмотров 264. Ответов 2
Метки нет (Все метки)

Привет всем. В книге Страуструпа, есть такая задачка:
Определите класс 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++
помогите никак не получается :( вот я создал проект dll, написал в .h-нике #ifdef DLL_EXPORTS #define DLL_API __declspec(dllexport) ...

Указатель для вызова виртуальной функции - C++
Помогите разобраться в строении вызова виртуальной функции Если не сложно, объсните каждый указатель #include &lt;iostream&gt; ...

Функция для вызова других функций - C++
короч нужна функция, которая принимала какое либо значения к примеру интовое, и в зависимости от значения вызывала бы другие функции) я...

Использование указателя для вызова по ссылке - C++
Всем привет! Вопрос: В чем разница? int t = 10; int q = 5; swap(&amp;t, &amp;q);//&lt;&lt; здесь system(&quot;Pause&quot;); return 0; ...

Пофиксить код для коректного вызова функции - C++
Есть код, нужно поправить функцию Vivod, чтобы корректно работала...не видно переменных #include &lt;conio.h&gt; #include &lt;iostream&gt; ...

Указатель на привязанную функцию можно использовать только для вызова функции - C++
int ident=mflats.at(1).GetIdent; Объясните пожалуйста, почему нельзя использовать такую форму? (функции Int, возвращает нужное мне...

Библиотека для работы с большими числами, возможность факторизации - C++
Привет всем! Какие библиотеки можете посоветовать для работы с большими числами, с возможностью их факторизации. Хотелось бы иметь...

Создать класс для хранения календарных дат. Обеспечить возможность работы с датами в различных форматах - C++
2. Создать класс для хранения календарных дат. Обеспечить возможность работы с датами в различных форматах, изменения даты на заданное...

Для типа данных unsigned long обеспечить возможность доступа как к числу целиком, так и отдельно к его битам - C++
Для типа данных unsigned long обеспечить возможность доступа как к числу целиком, так и отдельно к его битам с номерами 5, 8, 29.

Распечатать многочлен, заданный в виде односвязного списка, в обычном виде - C++
Люди помогите пожалуйста. Вообще не знаю как подступиться к задаче. Заранее спасибо! Многочлен от одной переменной Х можно представить...


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

Или воспользуйтесь поиском по форуму:
После регистрации реклама в сообщениях будет скрыта и будут доступны все возможности форума.
anmartex
...
1703 / 1196 / 495
Регистрация: 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, спасибо.
Ответ Создать тему
Опции темы

КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin® Version 3.8.9
Copyright ©2000 - 2017, vBulletin Solutions, Inc.
Рейтинг@Mail.ru