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

Класс Complex, реализация операций и перегрузки - C++

Восстановить пароль Регистрация
 
RapDog
0 / 0 / 0
Регистрация: 06.11.2013
Сообщений: 43
01.04.2014, 14:41     Класс Complex, реализация операций и перегрузки #1
Ребят подскажите пожалуйста в чём ошибка, задание таково : Комплексное число представляются парой действительных чисел (a,b), где а- действ часть а b-мнимая часть. Реализовать класс Complex для работы с комплексными числами. Обязательно должны присутствовать операции:
-сложения add, (a,b)+(c,d)=(a+b,c+d);
-вычитания sub,(a,b)-(c,d)=(a-b,c-d);
-умножения mul,(a,b)*(c,d)=(ac-bd,ad+bc);
-деления div,(a,b)/(c,d)=(ac+bd,bc-ad)/(c^2+d^2);
-сравнения equ,(a,b)=(c,d),если (a=c) и (b=d);

а так же выполнить перегрузку по умножению, код сделал таков но ошибка не пойму в чём, заранее спасибо))) :


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
#include <iostream>
#include <cstdlib>
#include <cmath>
using namespace std;
 
class My_complex{
    int a,b,c,d;
    public: 
        My_complex()    
        {a=0;b=0;}
//Slozchenie
void add (float c ,float d)
{   
    a=a+c;
    b=b+d;  
}
//Vychitanie
void sub (float c ,float d)
{   
    a=a-c;
    b=b-d;  
}
//Umnozchenie
void mul(float c ,float d)
{   
    a=a*c-b*d;
    b=a*d=b*c   
}
//Delenie
 
void div (float c ,float d)
{   
    a=(a*c+b*d)/(pow(c,2)+pow(d,2));
    b+(b*c-a*d)/(pow(c,2)+pow(d,2));    
}
//Sravnenie
bool equ (float c ,float d)
{
    if (a==c && b==d)
    {
        cout<<"TRUE"<<"\n";
    }
    else
    {
        cout<<"FALSE"<<"\n";
    }
}
//Peregruzka funkcii umnozch (mul)
 
My_complex operator==(My_complex t)
{
    My_complex temp;
    
    a=a*c-b*d;
    b=a*d=b*c
}
 
int main(int argc, char** argv) 
{
 
    three_d a,b,c;
    a.assign(1,2,3);
    b.assign(10,10,10);
    a.show();
    b.show();
    c=a+b;
    c.show();
    c=a+b+c;
    c.show();
    
    system("PAUSE");
    return 0;
}
Similar
Эксперт
41792 / 34177 / 6122
Регистрация: 12.04.2006
Сообщений: 57,940
01.04.2014, 14:41     Класс Complex, реализация операций и перегрузки
Посмотрите здесь:

C++ Классы, с использованием ПЕРЕГРУЗКИ ОПЕРАЦИЙ
C++ Стандартный класс complex.
C++ Класс Complex
C++ Класс complex
C++ Создать класс Complex
После регистрации реклама в сообщениях будет скрыта и будут доступны все возможности форума.
aLarman
636 / 557 / 89
Регистрация: 13.12.2012
Сообщений: 2,109
01.04.2014, 14:46     Класс Complex, реализация операций и перегрузки #2
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
#include <iostream>
class MyComplex
{
    double x;
    double y;
public:
    MyComplex():x(0), y(0)
    {
 
    }
    MyComplex(double Real, double Im = 0): x(Real), y(Im){}
    const MyComplex operator+(const MyComplex & r)
    {
        MyComplex tmp;
        tmp.x = x + r.x;
        tmp.y = y + r.y;
        return tmp;
    }
    const MyComplex operator-(const MyComplex & r)
    {
        MyComplex tmp;
        tmp.x = x - r.x;
        tmp.y = y - r.y;
        return tmp;
    }
    const MyComplex operator*(const MyComplex & r)
    {
        MyComplex tmp;
        tmp.x = x*r.x - y*r.y;
        tmp.y = x*r.y + y*r.x;
        return tmp;
    }
    friend std::ostream & operator<<(std::ostream & os, MyComplex & r)
    {
        os << "Real = " << r.x << ", Im = " << r.y;
        return os;
    }
};
 
void main()
{
    MyComplex ampl1(1.1,3.5);
    MyComplex ampl2(3,4);
    std::cout << ampl1<<std::endl;
    std::cout << ampl2<<std::endl;
 
    MyComplex ampl3 = ampl1 + ampl2;
    std::cout << ampl3<<std::endl;
    MyComplex ampl4 = ampl1 * ampl2;
    std::cout << ampl4<<std::endl;
    system("pause");
}
RapDog
0 / 0 / 0
Регистрация: 06.11.2013
Сообщений: 43
01.04.2014, 14:49  [ТС]     Класс Complex, реализация операций и перегрузки #3
в том то и проблема что я преподу не объясню этот способ, мне нужно чтобы в моём коде ошибку нашли)) а за код спасибо)
aLarman
636 / 557 / 89
Регистрация: 13.12.2012
Сообщений: 2,109
01.04.2014, 14:51     Класс Complex, реализация операций и перегрузки #4
Цитата Сообщение от RapDog Посмотреть сообщение
мне нужно чтобы в моём коде ошибку нашли)
Самая первая, у Вас класс - комплексное число, почему в нем 4 интовых значения?, в то время как комплексное число представляется всего парой чисел

Добавлено через 46 секунд
и следущий вопрос, почему int а не float или double, или комплексные числа вдруг стали представляться только целыми числами
RapDog
0 / 0 / 0
Регистрация: 06.11.2013
Сообщений: 43
01.04.2014, 14:53  [ТС]     Класс Complex, реализация операций и перегрузки #5
Цитата Сообщение от aLarman Посмотреть сообщение
Самая первая, у Вас класс - комплексное число, почему в нем 4 интовых значения?, в то время как комплексное число представляется всего парой чисел

Добавлено через 46 секунд
и следущий вопрос, почему int а не float или double, или комплексные числа вдруг стали представляться только целыми числами
ну переменных то 4 (a,b,c,d) напишите тогда пожлст как должно быть
aLarman
636 / 557 / 89
Регистрация: 13.12.2012
Сообщений: 2,109
01.04.2014, 14:54     Класс Complex, реализация операций и перегрузки #6
я Вам написал
palantiron
 Аватар для palantiron
21 / 30 / 2
Регистрация: 03.06.2011
Сообщений: 330
01.04.2014, 14:57     Класс Complex, реализация операций и перегрузки #7
Сделайте double, иначе при делении у вас будут интересные результаты (в C++ для целых целочисленное деление, т.е. при делении 1 / 2 получим 0, а не 0.5 как хотелось бы)

Добавлено через 1 минуту
И плюс к этому советую отказаться от c и d. Они не нужны. У объекта Комплексное_число только два поля данных - действительная и мнимая части.
aLarman
636 / 557 / 89
Регистрация: 13.12.2012
Сообщений: 2,109
01.04.2014, 14:57     Класс Complex, реализация операций и перегрузки #8

Не по теме:

Цитата Сообщение от RapDog Посмотреть сообщение
Комплексное число представляются парой действительных чисел
даже в задании про это написано



Добавлено через 38 секунд

Не по теме:

Цитата Сообщение от palantiron Посмотреть сообщение
У объекта Комплексное_число только два поля данных - действительная и мнимая части.
Вы хоть читайте что перед Вами написано уже

palantiron
 Аватар для palantiron
21 / 30 / 2
Регистрация: 03.06.2011
Сообщений: 330
01.04.2014, 14:58     Класс Complex, реализация операций и перегрузки #9
Просто в сами функции передавайте объект типа Комплексное_число и производите манипуляции.
RapDog
0 / 0 / 0
Регистрация: 06.11.2013
Сообщений: 43
01.04.2014, 14:58  [ТС]     Класс Complex, реализация операций и перегрузки #10
Вот скрин
Миниатюры
Класс Complex, реализация операций и перегрузки  
aLarman
636 / 557 / 89
Регистрация: 13.12.2012
Сообщений: 2,109
01.04.2014, 15:01     Класс Complex, реализация операций и перегрузки #11
RapDog, потому что у Класса нет закрывающей скобки, так же как и ; после нее
RapDog
0 / 0 / 0
Регистрация: 06.11.2013
Сообщений: 43
01.04.2014, 15:06  [ТС]     Класс Complex, реализация операций и перегрузки #12
aLarman, Всё равно не работает
palantiron
 Аватар для palantiron
21 / 30 / 2
Регистрация: 03.06.2011
Сообщений: 330
01.04.2014, 15:09     Класс Complex, реализация операций и перегрузки #13
Делайте лучше по такому принципу (минимальная доработка кода)

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
class My_complex{
    double re, im;
    public:
 
        My_complex()
        {
            re=0;
            im=0;
        }
 
        My_complex(double re, double im)
        {
            this->re = re;
            this->im = im;
        }
//Slozchenie
        My_complex add(My_complex cnum)
        {
            return My_complex(this->re + cnum.re, this->im + cnum.im);
        }
//Vychitanie
        My_complex sub(My_complex cnum)
        {
            return My_complex(this->re - cnum.re, this->im - cnum.im);
        }
 
        My_complex mul(My_complex cnum)
        {
            return My_complex(this->re*cnum.re-this->im*cnum.im, this->re * cnum.im + this->im * cnum.re);
        }
 
        void show()
        {
            cout << this->re << " " << this->im;
        }
};
RapDog
0 / 0 / 0
Регистрация: 06.11.2013
Сообщений: 43
01.04.2014, 15:15  [ТС]     Класс Complex, реализация операций и перегрузки #14
palantiron, не объясню преподу этот код, да и там зав кафедры принимает, сложная женщина))
aLarman
636 / 557 / 89
Регистрация: 13.12.2012
Сообщений: 2,109
01.04.2014, 15:17     Класс Complex, реализация операций и перегрузки #15
Цитата Сообщение от RapDog Посмотреть сообщение
не объясню преподу этот код
а чего Вы хотите? сделать так что бы Ваш код работал? а что бы он работало, надо его изменить потому что Ваш код - это полная ахиннея, а то, что Вы не сможете объяснить измененный код, это да печаль-беда...что делать - я даже не могу сказать
SatanaXIII
01.04.2014, 16:41
  #16

Не по теме:

Цитата Сообщение от RapDog Посмотреть сообщение
сложная женщина
С семиугольным телом.

MoreAnswers
Эксперт
37091 / 29110 / 5898
Регистрация: 17.06.2006
Сообщений: 43,301
01.04.2014, 19:05     Класс Complex, реализация операций и перегрузки
Еще ссылки по теме:

Создать класс Complex C++
Реализовать класс Complex C++
C++ С++ класс (создайте класс с именем Complex для выполнения в арифмитических операий с комплексными числами))

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

Или воспользуйтесь поиском по форуму:
RapDog
0 / 0 / 0
Регистрация: 06.11.2013
Сообщений: 43
01.04.2014, 19:05  [ТС]     Класс Complex, реализация операций и перегрузки #17
Цитата Сообщение от SatanaXIII Посмотреть сообщение
С семиугольным телом.
точно)
Yandex
Объявления
01.04.2014, 19:05     Класс Complex, реализация операций и перегрузки
Ответ Создать тему
Опции темы

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