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

Перегрузить () для комплексных чисел - C++

Восстановить пароль Регистрация
 
Avgust
3 / 3 / 1
Регистрация: 03.11.2014
Сообщений: 80
02.03.2016, 17:46     Перегрузить () для комплексных чисел #1
Всем привет! Помогите пожалуйста с перегрузкой () для комплексных чисел. Условие: d1(0)=d2, d1,d2 - комплексные числа. Действительная часть d1 стала равна действительной части d2. d1(1)=d2 - тоже самое с мнимой частью. Все остальные операторы уже перегрузил, помогите пожалуйста с этим)
Лучшие ответы (1)
После регистрации реклама в сообщениях будет скрыта и будут доступны все возможности форума.
zss
Модератор
Эксперт С++
 Аватар для zss
5942 / 5547 / 1783
Регистрация: 18.12.2011
Сообщений: 14,155
Завершенные тесты: 1
02.03.2016, 18:52     Перегрузить () для комплексных чисел #2
C++
1
2
3
4
5
6
double& operator()(int k)
{
    if(k)
     return im;
   return re;
}
avgoor
562 / 352 / 83
Регистрация: 05.12.2015
Сообщений: 1,137
02.03.2016, 18:59     Перегрузить () для комплексных чисел #3
Сообщение было отмечено автором темы, экспертом или модератором как ответ
zss, Не покатит. Надо как-то так:
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
class complex
{
    double im, re;
public:
    class complexpart
    {
        complex ∁
        int i;
    public:
        complexpart(complex& comp, int i) : comp(comp), i(i) {}
        const complex& operator=(const complex r)
        {
            switch (i) {
            case 0:
                comp.re = r.re;
                break;
            case 1:
                comp.im = r.im;
            }
            return comp;
        }
    };
    complexpart operator()(int i) { return complexpart(*this, i); }
    complex(double re, double im) : re(re), im(im) {}
};
int main()
{
    complex d1(1, 1);
    complex d2(2, 2);
    d1(0) = d2;
    d1(1) = d2;
}
zss
Модератор
Эксперт С++
 Аватар для zss
5942 / 5547 / 1783
Регистрация: 18.12.2011
Сообщений: 14,155
Завершенные тесты: 1
02.03.2016, 19:34     Перегрузить () для комплексных чисел #4
У Вас круглые скобки - это что-то вроде индексации.
Соответственно, они должны возвращать тип содержащихся в классе данных, а не класс.
Что я Вам и предложил.
Получится
C++
1
2
3
4
5
6
int main()
{
    complex d1(1, 1);
   d1(0) = 1.5; // присвоение действительной части
    d1(1) = -1.5 // присвоение мнимой части;
}
Avgust
3 / 3 / 1
Регистрация: 03.11.2014
Сообщений: 80
03.03.2016, 05:18  [ТС]     Перегрузить () для комплексных чисел #5
zss, по заданию слева должно стоять комплексное число и справа тоже комплексное число. Так как вы написали, я перегрузил операцию []

Добавлено через 40 секунд
avgoor, спасибо, именно то, что нужно!) Идея была такая же, но не знал как реализовать, теперь понял как можно делать, спасибо)
Yandex
Объявления
03.03.2016, 05:18     Перегрузить () для комплексных чисел
Ответ Создать тему
Опции темы

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