0 / 0 / 1
Регистрация: 01.04.2013
Сообщений: 49
1

Операции над комплексными числами

07.12.2013, 18:24. Показов 3589. Ответов 4
Метки нет (Все метки)

Дано вот такое задание:
Написать программу на языке C++, реализующую арифметику комплекс-
ных чисел. Должны быть как минимум определены операторы +, +=, -,
-=, *, *=, /, /=, = , допускающие построение арифметических выраже-
ний в том виде, в каком они справедливы для double, а также позволяющие
в одном выражении смешивать комплексные и вещественные числа. Опре-
делите функции arg,mod, Re, Im.
Предусмотреть возможность печати комплексных чисел любым удобным
способом.
Текстовымпредставлениемкомплексного числа считать строки вида a±bi,
где a, b — представления чисел типа double.

Моя программа, но она не считает должным образом, в чем подвох?
C++ (Qt)
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
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
117
118
119
120
121
122
123
124
125
126
127
128
129
130
131
132
133
134
135
136
#include <iostream>
#include <cstring>
#include <cmath>
#include <cstdlib>
using namespace std;
 
class Komplex{
    public:
        Komplex() {}
        Komplex(double r);// {re = 0; im = 0;}
        Komplex(double r, double i) { re = r, im = i; }
        ~Komplex() {}
double real () const {return re; }
 
double imag () const {return im; }
        //double arg () const {return arg; }
        //double mod () const {return mod; }
        Komplex& operator +( const Komplex &rhs );
        Komplex& operator +=( const Komplex &rhs);
        Komplex& operator -( const Komplex &rhs );
        Komplex& operator -=( const Komplex &rhs );
        Komplex& operator *( const Komplex &rhs );
        Komplex& operator *=( const Komplex &rhs );
        Komplex& operator /( const Komplex &rhs );
        Komplex& operator /=( const Komplex &rhs );
        Komplex& operator =( const Komplex &rhs );
        friend ostream &operator <<(ostream &, Komplex &);
        friend istream &operator >>(istream &, Komplex &);
    private:
        double re;
        double im;
};
//double Komplex::re;
//double Komplex::im;
Komplex& Komplex::operator +( const Komplex &rhs )
{
    double e, r;
    e = re + rhs.re;
    r = im + rhs.im;
    return *this;
}
 
/*Komplex& Komplex::operator +=( const Komplex &rhs )
{
   re += rhs.re; im += rhs.im;
   return rhs;
}*/
Komplex& Komplex::operator -( const Komplex &rhs )
{
    double q, w;
    q = re - rhs.re;
    w = im - rhs.im;
    return *this;
}
Komplex& Komplex::operator -=( const Komplex &rhs )
{
    re -= rhs.re; im -= rhs.im; return *this;
}
Komplex& Komplex::operator *( const Komplex &rhs )
{
    double i, j;
    i = re * rhs.re - im * rhs.im;
    j = re * rhs.im + rhs.re * im;
    return *this;
}
Komplex& Komplex::operator *=( const Komplex &rhs )
{
    double tmp = re*rhs.re-im*rhs.im;
    im = im*rhs.re+re*rhs.im;
    re = tmp;
    return *this;
}
Komplex& Komplex::operator /( const Komplex &rhs )
{
    double a,b,c;
    a = rhs.re * rhs.re + rhs.im * rhs.im;
    b = (re * rhs.re + im * rhs.im) / a;
    c = (rhs.re * im - re * rhs.im) / a;
 
    return *this;
}
Komplex& Komplex::operator /=( const Komplex &rhs )
{
    double denom = rhs.re*rhs.re + rhs.im*rhs.im;
    double re1 = (re*rhs.re+im*rhs.im)/denom;
    double im1 = (rhs.re*im-re*rhs.im)/denom;
    re = re1;
    im = im1;
    return *this;
}
Komplex& Komplex::operator =( const Komplex &rhs )
{
    re = rhs.re; im = rhs.im; return *this;
}
ostream &operator << (ostream &fo, Komplex &rhs)
    {
    if (rhs.im < 0) fo << rhs.re << "+i(" << rhs.im << ")\n";
    else fo << rhs.re << "+i" << rhs.im << "\n";
 
    return fo;
    }
istream &operator >>(istream &fi, Komplex &rhs)
    {
    cout << "Enter Real: ";
    fi >> rhs.re;
    cout << "Enter Image: ";
    fi >> rhs.im;
    return fi;
    }
 
int main()
{
   //clrscr();
    Komplex c1, c2, c3, c4, c5;
    cin >> c1;
    cin >> c2;
    cin >> c3;
    cin >> c4;
    cin >> c5;
 
    cout << "\nc1 = " << c1;
    cout << "c2 = " << c2;
    cout << "c3 = " << c3;
    cout << "c4 = " << c4;
    cout << "c5 = " << c5 << '\n';
 
//  cout << "Модуль c1: " << c1.abs() << "\n\n";
 
    cout << "c1 + c2 = " << (c1 + c2);
    cout << "c1 - c3 = " << (c1 - c3);
    cout << "c1 * c4 = " << (c1 * c4);
    cout << "c1 / c5 = " << (c1 / c5);
 
    //getch();
   return 0;
}
__________________
Помощь в написании контрольных, курсовых и дипломных работ здесь
0
Programming
Эксперт
94731 / 64177 / 26122
Регистрация: 12.04.2006
Сообщений: 116,782
07.12.2013, 18:24
Ответы с готовыми решениями:

Операции над комплексными числами
В данной программе нужно создать дружескую функцию класса Komplex. Таким образом чтобы читалась...

Операции над комплексными числами с использованием перегруженных операций
Написать программу, выполняющую операции над комплексными числами, используя перегруженные операции.

Структуры: арифметические операции (сложение, вычитание, умножение, деление) над комплексными числами
Написать программу, реализующую арифметические операции (сложение, вычитание, умножение, деление),...

Операции с комплексными числами и перегрузка операторов << и >>
Здрасте! Пытаюсь решить задачу по написанию программы, которая производит действия с комплексными...

4
51 / 51 / 21
Регистрация: 08.02.2013
Сообщений: 189
07.12.2013, 18:32 2
Цитата Сообщение от 1_vlad Посмотреть сообщение
Komplex& Komplex::operator +( const Komplex &rhs )
{
* * double e, r;
* * e = re + rhs.re;
* * r = im + rhs.im;
* * return *this;
}
Начнем с перегрузки операции сложения. Она перегружена неверно. Как вариант нужно в теле функции создавать локальный объект класса, правильно инициализировать его вещественную и мнимую часть и возвращать его по значению.
0
0 / 0 / 1
Регистрация: 01.04.2013
Сообщений: 49
07.12.2013, 18:36  [ТС] 3
Цитата Сообщение от Extrim88 Посмотреть сообщение
Начнем с перегрузки операции сложения. Она перегружена неверно. Как вариант нужно в теле функции создавать локальный объект класса, правильно инициализировать его вещественную и мнимую часть и возвращать его по значению.
можно на примере исправить, и показать как правильно описать функцию.
0
51 / 51 / 21
Регистрация: 08.02.2013
Сообщений: 189
07.12.2013, 18:46 4
Или даже так, перегрузка операции сложения 2-х комплексных чисел

C++
1
2
3
4
5
6
Komplex& Komplex::operator +( const Komplex &rhs )
{
    re += rhs.re;
    im += rhs.im;
    return *this;
}
По аналогии, остальные операции
0
0 / 0 / 1
Регистрация: 01.04.2013
Сообщений: 49
07.12.2013, 19:07  [ТС] 5
Цитата Сообщение от Extrim88 Посмотреть сообщение
Или даже так, перегрузка операции сложения 2-х комплексных чисел
Но мне нужна и операция "+=", пробовал - да функция с "+" получилась, числа считает, но "-", "*", и "/" как и прежде не работают.
0
IT_Exp
Эксперт
87844 / 49110 / 22898
Регистрация: 17.06.2006
Сообщений: 92,604
07.12.2013, 19:07

Реализовать арифметические операции с комплексными числами
Создайте структуру, описывающую комплексное число. Реализуйте арифметические операции с...

Операции с комплексными числами через ООП
Друзья, написал код программы. ошибку при компиляции выдает: fatal error LNK1169: обнаружен...

Класс для операций над комплексными числами (код не работает)
Создать класс для выполнения операций с комплексными числами. Предусмотреть операции: составление и...

Определить функции, выполняющие арифметические операций над комплексными числами
Всем привет. Ребят, очень нужна ваша помощь, уже неделю парюсь с одной прогой. Не могли бы знающие...


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

Или воспользуйтесь поиском по форуму:
5
Ответ Создать тему
Опции темы

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