Форум программистов, компьютерный форум, киберфорум
С++ для начинающих
Войти
Регистрация
Восстановить пароль
Карта форума Темы раздела Блоги Сообщество Поиск Заказать работу  
 
Рейтинг 4.73/11: Рейтинг темы: голосов - 11, средняя оценка - 4.73
0 / 0 / 0
Регистрация: 06.11.2013
Сообщений: 44
1

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

01.04.2014, 14:41. Показов 2112. Ответов 16
Метки нет (Все метки)

Author24 — интернет-сервис помощи студентам
Ребят подскажите пожалуйста в чём ошибка, задание таково : Комплексное число представляются парой действительных чисел (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;
}
0
Programming
Эксперт
94731 / 64177 / 26122
Регистрация: 12.04.2006
Сообщений: 116,782
01.04.2014, 14:41
Ответы с готовыми решениями:

Базовый класс Complex и производный класс для реализации квадратных матриц
1) Создайте базовый класс Complex (комплексное число) для реализации комплексных чисел в...

Создать абстрактный класс Pair с виртуальными арифметическими операциями + производный класс Complex
Создать абстрактный базовый класс Pair с виртуальными арифметическими операциями (+-*/)....

Программирование с использованием перегрузки операций
Хелп, помогите с заданием, мой вариант 9. Это все надо делать в Ембаркадеро. Я так понял что надо...

Классы, с использованием ПЕРЕГРУЗКИ ОПЕРАЦИЙ
Доброго времени суток. Классы, с использованием ПЕРЕГРУЗКИ ОПЕРАЦИЙ.Определить класс с именем...

16
654 / 575 / 164
Регистрация: 13.12.2012
Сообщений: 2,124
01.04.2014, 14:46 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");
}
1
0 / 0 / 0
Регистрация: 06.11.2013
Сообщений: 44
01.04.2014, 14:49  [ТС] 3
в том то и проблема что я преподу не объясню этот способ, мне нужно чтобы в моём коде ошибку нашли)) а за код спасибо)
0
654 / 575 / 164
Регистрация: 13.12.2012
Сообщений: 2,124
01.04.2014, 14:51 4
Цитата Сообщение от RapDog Посмотреть сообщение
мне нужно чтобы в моём коде ошибку нашли)
Самая первая, у Вас класс - комплексное число, почему в нем 4 интовых значения?, в то время как комплексное число представляется всего парой чисел

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

Добавлено через 46 секунд
и следущий вопрос, почему int а не float или double, или комплексные числа вдруг стали представляться только целыми числами
ну переменных то 4 (a,b,c,d) напишите тогда пожлст как должно быть
0
654 / 575 / 164
Регистрация: 13.12.2012
Сообщений: 2,124
01.04.2014, 14:54 6
я Вам написал
0
21 / 29 / 5
Регистрация: 03.06.2011
Сообщений: 329
01.04.2014, 14:57 7
Сделайте double, иначе при делении у вас будут интересные результаты (в C++ для целых целочисленное деление, т.е. при делении 1 / 2 получим 0, а не 0.5 как хотелось бы)

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

Не по теме:

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



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

Не по теме:

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

0
21 / 29 / 5
Регистрация: 03.06.2011
Сообщений: 329
01.04.2014, 14:58 9
Просто в сами функции передавайте объект типа Комплексное_число и производите манипуляции.
0
0 / 0 / 0
Регистрация: 06.11.2013
Сообщений: 44
01.04.2014, 14:58  [ТС] 10
Вот скрин
Миниатюры
Класс Complex, реализация операций и перегрузки  
0
654 / 575 / 164
Регистрация: 13.12.2012
Сообщений: 2,124
01.04.2014, 15:01 11
RapDog, потому что у Класса нет закрывающей скобки, так же как и ; после нее
0
0 / 0 / 0
Регистрация: 06.11.2013
Сообщений: 44
01.04.2014, 15:06  [ТС] 12
aLarman, Всё равно не работает
0
21 / 29 / 5
Регистрация: 03.06.2011
Сообщений: 329
01.04.2014, 15:09 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;
        }
};
0
0 / 0 / 0
Регистрация: 06.11.2013
Сообщений: 44
01.04.2014, 15:15  [ТС] 14
palantiron, не объясню преподу этот код, да и там зав кафедры принимает, сложная женщина))
0
654 / 575 / 164
Регистрация: 13.12.2012
Сообщений: 2,124
01.04.2014, 15:17 15
Цитата Сообщение от RapDog Посмотреть сообщение
не объясню преподу этот код
а чего Вы хотите? сделать так что бы Ваш код работал? а что бы он работало, надо его изменить потому что Ваш код - это полная ахиннея, а то, что Вы не сможете объяснить измененный код, это да печаль-беда...что делать - я даже не могу сказать
0
SatanaXIII
01.04.2014, 16:41
  #16

Не по теме:

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

0
0 / 0 / 0
Регистрация: 06.11.2013
Сообщений: 44
01.04.2014, 19:05  [ТС] 17
Цитата Сообщение от SatanaXIII Посмотреть сообщение
С семиугольным телом.
точно)
0
01.04.2014, 19:05
IT_Exp
Эксперт
87844 / 49110 / 22898
Регистрация: 17.06.2006
Сообщений: 92,604
01.04.2014, 19:05
Помогаю со студенческими работами здесь

Реализовать класс Pair (пара чисел); определить производный класс Complex (комплексное число)
Здравствуйте. Задали задание: Создать класс Pair (пара чисел); определить метод перемножения...

С++ класс (создайте класс с именем Complex для выполнения в арифмитических операий с комплексными числами))
Кто сможет помогите пожалуйста! (Класс Complex). Создайте класс с именем Complex для выполнения...

Базовый класс Complex и производный класс Vector
Создайте базовый класс Complex (комплексное число) для реализации комплексных чисел в...

Перегрузки операций для математических векторов в двумерном пространстве
Доброго времени суток) Написана программа для перегрузки операций(для математических векторов в...


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

Или воспользуйтесь поиском по форуму:
17
Ответ Создать тему
КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin
Copyright ©2000 - 2024, CyberForum.ru