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

С++ для начинающих

Войти
Регистрация
Восстановить пароль
 
1_vlad
0 / 0 / 0
Регистрация: 01.04.2013
Сообщений: 49
#1

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

12.12.2013, 15:41. Просмотров 393. Ответов 5
Метки нет (Все метки)

В данной программе нужно создать дружескую функцию класса Komplex. Таким образом чтобы читалась строка с5=2+с1. Как это правильно сделать??

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
137
138
139
#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 );
        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;
    re = re + rhs.re;
    im = 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 q, w;
    re = re - rhs.re;
    im = 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 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 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 d = rhs.re*rhs.re + rhs.im*rhs.im;
    double re1 = (re*rhs.re+im*rhs.im)/d;
    double im1 = (rhs.re*im-re*rhs.im)/d;
    re = re1;
    im = im1;
 
    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 << "+(" << rhs.im << ")i\n";
    else fo << rhs.re << "+" << rhs.im << "i\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;  //1
    cin >> c2;  //4
    cin >> c3;  //2
    cin >> c4;  //6
    cin >> c5;  //9
 
    cout << "\nc1 = " << c1;
    cout << "c2 = " << c2;
    cout << "c3 = " << c3;
    cout << "c4 = " << c4;
    cout << "c5 = " << c5 << '\n';
 
    cout << "c1 + c2 = " << (c1 + c2);
    cout << "c1 - c3 = " << (c1 - c3);
    cout << "c1 * c4 = " << (c1 * c4);
    cout << "c1 / c5 = " << (c1 / c5);
    c5=2+c1;
 
    //getch();
   return 0;
}
0
Надоела реклама? Зарегистрируйтесь и она исчезнет полностью.
Similar
Эксперт
41792 / 34177 / 6122
Регистрация: 12.04.2006
Сообщений: 57,940
12.12.2013, 15:41
Здравствуйте! Я подобрал для вас темы с ответами на вопрос Операции над комплексными числами (C++):

Операции над комплексными числами - C++
Дано вот такое задание: Написать программу на языке C++, реализующую арифметику комплекс- ных чисел. Должны быть как минимум определены...

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

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

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

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

Операции и функции в работе в классе с комплексными числами С++ Visual Studio - C++
Помогите пожалуйста. Написала программу, но считает и умножает комплексные числа не правильно. Раньше умножало нормально, но теперь не знаю...

5
egor2116
339 / 370 / 42
Регистрация: 20.01.2013
Сообщений: 1,127
12.12.2013, 16:18 #2
Как то так
только напишите методы доступа к данным PRIVATE
C++
1
2
3
4
5
6
7
8
9
10
11
12
13
class Komplex
{
          //...
  public:
           //....
          friend Komplex operator+(const Komplex & k1, const Komplex & k2);
  
};
 
Komplex operator+(const Komplex & k1, const Komplex & k2)
{
     return Komplex(k1.getRe() + k2.getRe(), k1.getIm() + k2.getIm());
}
0
1_vlad
0 / 0 / 0
Регистрация: 01.04.2013
Сообщений: 49
12.12.2013, 16:27  [ТС] #3
Цитата Сообщение от egor2116 Посмотреть сообщение
Как то так
только напишите методы доступа к данным PRIVATE
что то у меня ничего с этого не получилось.

вот исправленный код

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
137
138
139
140
141
142
143
#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 );
        friend Komplex operator+ (const Komplex & rhs, const Komplex & lhs);
        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;
    re = re + rhs.re;
    im = im + rhs.im;
    return *this;
}
Komplex operator+(const Komplex & rhs, const Komplex & lhs)
{
     return Komplex(rhs.re + rhs.re, lhs.im + lhs.im);
}
Komplex& Komplex::operator +=( const Komplex& rhs )
{
   re += rhs.re; im += rhs.im;
   return *this;
}
Komplex& Komplex::operator -( const Komplex& rhs )
{
    //double q, w;
    re = re - rhs.re;
    im = 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 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 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 d = rhs.re*rhs.re + rhs.im*rhs.im;
    double re1 = (re*rhs.re+im*rhs.im)/d;
    double im1 = (rhs.re*im-re*rhs.im)/d;
    re = re1;
    im = im1;
 
    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 << "+(" << rhs.im << ")i\n";
    else fo << rhs.re << "+" << rhs.im << "i\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;  //1
    cin >> c2;  //4
    cin >> c3;  //2
    cin >> c4;  //6
    cin >> c5;  //9
 
    cout << "\nc1 = " << c1;
    cout << "c2 = " << c2;
    cout << "c3 = " << c3;
    cout << "c4 = " << c4;
    cout << "c5 = " << c5 << '\n';
 
    cout << "c1 + c2 = " << (c1 + c2);
    cout << "c1 - c3 = " << (c1 - c3);
    cout << "c1 * c4 = " << (c1 * c4);
    cout << "c1 / c5 = " << (c1 / c5);
    c5=2+c1;
 
    //getch();
   return 0;
}
строка c5=2+c1 по прежнему ругаеся
0
Black_Thorn
17 / 17 / 1
Регистрация: 06.12.2012
Сообщений: 46
12.12.2013, 16:29 #4
friend Komplex operator+(double op, Komplex &rhs);

Komplex operator+(double op, Komplex &rhs)
{
return Komplex(rhs.re + op, rhs.im);
}
1
egor2116
339 / 370 / 42
Регистрация: 20.01.2013
Сообщений: 1,127
12.12.2013, 16:38 #5
строка c5=2+c1 по прежнему ругаеся
Это я не доглядел, мне показалось вам нужно
c5=с2+c1
Ответ сообщением выше
1
dzrkot
zzzZZZ...
519 / 349 / 53
Регистрация: 11.09.2013
Сообщений: 2,004
12.12.2013, 16:45 #6
вот мб вам поможет эта тема
Шаблон класса для работы с комплексными числами
0
MoreAnswers
Эксперт
37091 / 29110 / 5898
Регистрация: 17.06.2006
Сообщений: 43,301
12.12.2013, 16:45
Привет! Вот еще темы с ответами:

Операции с комплексными числами. Проконсультируйте. (аргумент, модуль, сложение, умножение, вычитание) - C++
здравствуйте. Эта программа рабочая, работает для аргумента, сложения, вычитания, умножения, модуля комплексных чисел. Проверьте её...

Операции над большими числами - C++
Здравствуйте. Хочу создать класс выполняющий арифметические операции над большие числа (знаю что велосипед, делаю в учебных целях). Класс...

Операции над натуральными числами - C++
Привет всем, я новенький как на форуме так и на в программировании. Начал изучать с++ 2 недели назад,самоучка, так что сильно не кричите)) ...

Операции над числами матрицы - C++
Заполнить матрицу случайными числами. Отобразить симметрично относительно горизонтальной оси сектора матрицы, которые лежат выше и ниже...


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

Или воспользуйтесь поиском по форуму:
6
Yandex
Объявления
12.12.2013, 16:45
Ответ Создать тему
Опции темы

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