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

Программа с классами комплексных чисел и перегрузками операций - C++

Восстановить пароль Регистрация
 
Рейтинг: Рейтинг темы: голосов - 9, средняя оценка - 4.78
melaaro
0 / 0 / 0
Регистрация: 19.09.2012
Сообщений: 30
19.09.2012, 22:14     Программа с классами комплексных чисел и перегрузками операций #1
Задание состоит из таких частей:
Кликните здесь для просмотра всего текста
Для выбранного варианта определите класс, включив в него:
• конструктор по умолчанию;
• конструктор инициализации;
• конструктор преобразования базового типа к типу, определяемому разрабатываемым классом;
В разрабатываемом классе перегрузите потоковые операции для объектов класса. Для выполнения задания предложенного варианта перегрузите необходимые математические операции.

I. Определить класс - "Комплексное число" в виде действительной и мнимой частей комплексного числа.
II. Составить пользовательскую функцию, которая получает значение типа "Комплексное число", вычисляет значение математической функции y(z), заданной в варианте, и возвращает полученное значение.
III. Составить пользовательскую функцию, которая получает значение стандартного типа complex, вычисляет значение математической функции y(z), заданной в варианте, и возвращает полученное значение.
IV. Составить пользовательскую функцию, которая вычисляет таблицу значений заданной математической функции y(z1), где z1, значение типа "Комплексное число", и у(z), где z, значение типа complex. Таблица вычисляется для комплексных чисел, для изменения действительной части комплексных значений в диапазоне -1<=Re(z)<=1, а мнимой в диапазоне 1<=Im(z)<=1 с шагом 0.5 по обоим аргументам.
V. Составить пользовательскую функцию, которая вводит значение комплексного числа с клавиатуры в объект z типа "Комплексное число", вычисляет значение у(z), сравнивает его с таким же вычислением, но для значения типа complex. На экран функция выдает вычисленные значения и результат сравнения.
VI. Составить функцию main, органицующую работу всех функций.

Собственно, функция: y(z) = 1- z^5 - th(z/2)


по лекциям и найденному отчасти на вашем же форуме материалу сотворил подобие всего этого за исключением пункта IV, но оно естественно выдает кучу ошибок, ибо половина кода явно бред, возможно даже в элементарных вещах от невнимательности. но увы, как исправить, не знаю ~__~' надеюсь на снисходительное отношение и помощь в исправлении/написании этой прелести)

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
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
#define _USE_MATH_DEFINES
#include <iostream>
#include <conio.h>
using namespace std;
#include<cmath>
#include <math.h> 
#include <complex>
#pragma STDC CX_LIMITED_RANGE on/off
#define complex _Complex
#define _Complex_I const float _Complex
#define imaginary _Imaginary
#define _Imaginary_I const float _Imaginary
#define I
 
class Complex 
{ public:
double re, im;
 
    Complex() {re=im=0;} //по умолчанию
    Complex (double a) {re=a, im=0;} //преобразования
    Complex (double a, double b) {re=a, im=b;} //инициализации
 
    //перегрузка потоковых операций...
    ostream& operator << (ostream& S, Complex&d)
    { S<<d.re<<" "<<d.im<<endl;
    return S;
    }
 
    istream& operator >> (istream& S, Complex&d)
    { S>>d.re>>d.im;
    return S;
    }
 
    //перегрузка необходимых мат. операций: -, /на число, ^[* на себя?...]
    friend Complex operator - (Complex a, Complex b) {return Complex(a.re-b.re, a.im-b.im);};
    friend Complex operator * (Complex a, Complex b) {return Complex(a.re*b.re, a.im+b.im)/*(a.re*b.re-a.im*b.im)+(a.re*b.im+a.im*b.re)*/;};
    friend Complex operator / (Complex a, int n) {return Complex (a.re/n, a.im/n);};
};
 
    Complex func (Complex z)
    {
        Complex y;
        y = 1 - z*z - tanh(z/2);
        return y;
    }
 
    double complex func2 (complex z1)
    {
        double complex y1;
        y = 1 - z*z - catanh(z/2);
        return y1;
    }
 
    //тут должна быть загадочная функция с таблицей
 
    void vvod ()
    {
        Complex z, y;
        double complex y1;
        int re, im;
        cout<<"ReZ = ";
        cin>>z.re;
        cout<<"ImZ = ";
        cin>>z.im;
        
        y = func(z);
        y1 = func2(z);
        cout<<" ComplexDigit y(z) = "<<y<<endl;
        cout<<"complex y(z) = "<<y1<<endl;
        if (y>y1)
            cout<<y<<" > "<<y1<<endl;
        else
            cout<<y<<" < "<<y1<<endl;
    }
 
    void main()
    {
        Complex Z;
        vvod();
        getch();
 
    }
p.s. в формуле вместо z^5 сделала z*z, т.к не представляю, как эту операцию представить для комплексного числа с перегрузкой =Ъ
директивы прописаны все подряд, которые вообще нашлись на эту тему...
Similar
Эксперт
41792 / 34177 / 6122
Регистрация: 12.04.2006
Сообщений: 57,940
19.09.2012, 22:14     Программа с классами комплексных чисел и перегрузками операций
Посмотрите здесь:

C++ Класс комплексных чисел
Класс для выполнения операций сложения, вычитания и умножения комплексных чисел C++
C++ умножение комплексных чисел
C++ Структура комплексных чисел
Работа с классами и перегрузка операций C++
После регистрации реклама в сообщениях будет скрыта и будут доступны все возможности форума.
castaway
Эксперт С++
4837 / 2976 / 367
Регистрация: 10.11.2010
Сообщений: 11,008
Записей в блоге: 10
Завершенные тесты: 1
19.09.2012, 22:27     Программа с классами комплексных чисел и перегрузками операций #2
Давай по порядку. Что какой вариант не получается и почему.
melaaro
0 / 0 / 0
Регистрация: 19.09.2012
Сообщений: 30
19.09.2012, 22:39  [ТС]     Программа с классами комплексных чисел и перегрузками операций #3
если это запустить, то выдается куча ошибок. например на перегрузки потоковых операций наезжает, "ошибка в объявлении функции, пропуск основного текста функции";
тут
C++
1
2
3
4
5
6
Complex func (Complex z)
    {
        Complex y;
        y = 1 - z*z - tanh(z/2);
        return y;
    }
"ни одна из 3х перегрузок не может преобразовать все типы аргументов";
в main'е ему не нравится условие y>y1, опять же оператор >...


не уверен, правильно ли вообще сделан пункт III относительно встроенного типа complex, так ли он должен определяться/выглядеть и тд...
IV вообще жуть какая-то, как эту таблицу делать, еще и с шагом...
опять же перегрузка операции возведения в степень тоже для меня темный лес
я в этой теме можно сказать вообще почти не разбираюсь, поэтому не представляю, как примерно с этими ошибками бороться, что менять и тд. может у меня в программе вообще что-то недописано, а я понятия не имею об этом
castaway
Эксперт С++
4837 / 2976 / 367
Регистрация: 10.11.2010
Сообщений: 11,008
Записей в блоге: 10
Завершенные тесты: 1
19.09.2012, 23:26     Программа с классами комплексных чисел и перегрузками операций #4
Я ничего не понял... Давай начнем с первого варианта. Что не ясно там? (только коротко)
melaaro
0 / 0 / 0
Регистрация: 19.09.2012
Сообщений: 30
19.09.2012, 23:43  [ТС]     Программа с классами комплексных чисел и перегрузками операций #5
не уверен, правильно ли
castaway
Эксперт С++
4837 / 2976 / 367
Регистрация: 10.11.2010
Сообщений: 11,008
Записей в блоге: 10
Завершенные тесты: 1
19.09.2012, 23:51     Программа с классами комплексных чисел и перегрузками операций #6
В том коде, что ты написал, есть решение первого варианта. Почему же ты так не уверен?
melaaro
0 / 0 / 0
Регистрация: 19.09.2012
Сообщений: 30
19.09.2012, 23:57  [ТС]     Программа с классами комплексных чисел и перегрузками операций #7
потому что в теме не сильно разбираюсь, а поскольку программа не работает, то и правильность отдельных частей проверить не могу)
в II меня смущают уже перегрузки тех операций, которые используются в формуле... опять же верно/не верно, и как все-таки быть с возведением в степень?
castaway
Эксперт С++
4837 / 2976 / 367
Регистрация: 10.11.2010
Сообщений: 11,008
Записей в блоге: 10
Завершенные тесты: 1
20.09.2012, 00:00     Программа с классами комплексных чисел и перегрузками операций #8
Так ты не понимаешь условия, или то что сам написал? ("... сотворил подобие ...")
Можешь выделить первый вариант?
melaaro
0 / 0 / 0
Регистрация: 19.09.2012
Сообщений: 30
20.09.2012, 00:09  [ТС]     Программа с классами комплексных чисел и перегрузками операций #9
я не сильно разбираюсь в конструкторах, классах и перегрузках)

определите класс, включив в него:
• конструктор по умолчанию;
• конструктор инициализации;
• конструктор преобразования базового типа к типу, определяемому разрабатываемым классом;
В разрабатываемом классе перегрузите потоковые операции для объектов класса. Для выполнения задания предложенного варианта перегрузите необходимые математические операции.
I. Определить класс - "Комплексное число" в виде действительной и мнимой частей комплексного числа.
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
class Complex 
{ public:
double re, im;
 
    Complex() {re=im=0;} //по умолчанию
    Complex (double a) {re=a, im=0;} //преобразования
    Complex (double a, double b) {re=a, im=b;} //инициализации
 
    //перегрузка потоковых операций...
    ostream& operator << (ostream& S, Complex&d)
    { S<<d.re<<" "<<d.im<<endl;
    return S;
    }
 
    istream& operator >> (istream& S, Complex&d)
    { S>>d.re>>d.im;
    return S;
    }
 
    //перегрузка необходимых мат. операций: -, /на число, ^[* на себя?...]
    friend Complex operator - (Complex a, Complex b) {return Complex(a.re-b.re, a.im-b.im);};
    friend Complex operator * (Complex a, Complex b) {return Complex(a.re*b.re, a.im+b.im)/*(a.re*b.re-a.im*b.im)+(a.re*b.im+a.im*b.re)*/;};
    friend Complex operator / (Complex a, int n) {return Complex (a.re/n, a.im/n);};
};
какие конкретно тут ошибки есть?
castaway
Эксперт С++
4837 / 2976 / 367
Регистрация: 10.11.2010
Сообщений: 11,008
Записей в блоге: 10
Завершенные тесты: 1
20.09.2012, 00:16     Программа с классами комплексных чисел и перегрузками операций #10
Если сравнивать с первым вариантом, то тут излишни все перегрузки. В условие они не входят.

P.S.: Мораль: писал не ты. За тебя писать не будет это никто, пока не приложишь усилия сам (те что ты приложил, увы, слишком скудные)
melaaro
0 / 0 / 0
Регистрация: 19.09.2012
Сообщений: 30
20.09.2012, 00:20  [ТС]     Программа с классами комплексных чисел и перегрузками операций #11
почему у меня складывается ощущение, что мы не понимаем друг друга в слове "вариант"?...
если бы писала не я, а кто-то по моей просьбе, то и программа бы была работающая, и за помощью обращаться бы не пришлось)
и почему вдруг излишни все перегрузки, если написано перегрузить потоковые операции и необходимые математические операции?... или, выходит, я задание не так понимаю?
castaway
Эксперт С++
4837 / 2976 / 367
Регистрация: 10.11.2010
Сообщений: 11,008
Записей в блоге: 10
Завершенные тесты: 1
20.09.2012, 00:42     Программа с классами комплексных чисел и перегрузками операций #12
melaaro, пардон, сам не так понял.
Что подразумевается под потоковыми операциями?
melaaro
0 / 0 / 0
Регистрация: 19.09.2012
Сообщений: 30
20.09.2012, 00:53  [ТС]     Программа с классами комплексных чисел и перегрузками операций #13
операции ввода и вывода данных. операторы >> и <<, т.е. как раз этот кусок
C++
1
2
3
4
5
6
7
8
9
10
//перегрузка потоковых операций...
    ostream& operator << (ostream& S, Complex&d)
    { S<<d.re<<" "<<d.im<<endl;
    return S;
    }
 
    istream& operator >> (istream& S, Complex&d)
    { S>>d.re>>d.im;
    return S;
    }
конкретно эти строчки вообще переписаны из лекции, надиктованной преподавателем, но программа на них все равно ругается, значит что-то где-то не так...
castaway
Эксперт С++
4837 / 2976 / 367
Регистрация: 10.11.2010
Сообщений: 11,008
Записей в блоге: 10
Завершенные тесты: 1
20.09.2012, 01:28     Программа с классами комплексных чисел и перегрузками операций #14
C++
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
#include <iostream>
 
using namespace std;
 
class Complex {
public:
    double  r, i;
 
    Complex() : r(0), i(0) {}                       // конструктор по-умолчанию
    Complex( double r ) : r(r) {}                   // конструктор преобразования
    Complex( double r, double i ) : r(r), i(i) {}   // конструктор инициализации
 
    friend ostream & operator << ( ostream & stream, Complex c )
    {
        stream << c.r << ", " << c.i << endl;
        return stream;
    }
};
 
int main() {
    Complex c( 1, 2 );
    cout << c << endl;
}
MoreAnswers
Эксперт
37091 / 29110 / 5898
Регистрация: 17.06.2006
Сообщений: 43,301
21.09.2012, 16:36     Программа с классами комплексных чисел и перегрузками операций
Еще ссылки по теме:

C++ Деление комплексных чисел
класс комплексных чисел C++
C++ Класс комплексных чисел

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

Или воспользуйтесь поиском по форуму:
melaaro
0 / 0 / 0
Регистрация: 19.09.2012
Сообщений: 30
21.09.2012, 16:36  [ТС]     Программа с классами комплексных чисел и перегрузками операций #15
благодарю)
Yandex
Объявления
21.09.2012, 16:36     Программа с классами комплексных чисел и перегрузками операций
Ответ Создать тему
Опции темы

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