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

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

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

Нужно исправить ошибки в классе комплексных чисел - C++

26.06.2013, 02:50. Просмотров 289. Ответов 2
Метки нет (Все метки)

Мой мозг породил нечто ужасное к ночи, и оно не желает работать. Задание из рода "Бред обыкновенный".
Надо исправить ошибки, а голова не варит, как...
Это класс комплексных чисел с перегрузками и дружественными функциями. Вот в этом и чепуха.
Уже не сплю неделю из-за проблем со средами, сегодня уже накалякал эту чепуху. Разработка ведётся в Eclipse, и он ругается на определённые строки, сейчас даже скажу, на какие.
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
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
144
145
146
147
148
149
150
151
152
153
154
155
156
157
158
159
#include <iostream>
#include <math.h>
using namespace std;
 
class complex {
    double re, im;
    public:
        complex() {}
        complex (double re1, double im1): re(re1), im(im1) {}
        ~complex() {}
        friend complex sum (complex c,complex c2);
        complex operator + (complex c) {
            complex result;
            result.re = re + c.re;
            result.im = im + c.im;
            return result;
        }
        friend complex operator - (complex c, complex c2);
        friend complex proizvedenie (complex c,complex c2);
        complex operator * (complex c) {
            complex result;
            result.re = re * c.re - im * c.im;
            result.im = im * c.re + re * c.im;
            return result;
        }
        friend complex operator / (complex c, complex c2);
        complex conjuncted() const {
            return complex (re, -im);
        }
        double modul() const {
            return sqrt(re * re + im * im);
        }
        friend ostream & operator << (ostream & out, complex &c);
        friend istream & operator >> (istream & in, complex &c);
        bool operator < (complex c)
        {
            return(modul() < c.modul()) ? true:false;
        }
        bool operator > (complex c)
        {
            return(modul() > c.modul()) ? true:false;
        }
        bool operator ==(complex c) {
            return(re == c.re && im == c.im) ? true:false;
        }
        bool operator != (complex c) {
            return *this == c ? false:true;
        }
        complex operator ++() {
            ++re;
            return *this;
        }
        complex operator --() {
            --re;
            return *this;
        }
        complex operator ++(int) {
            complex re1 = *this;
            ++re;
            return re1;
        }
        complex operator --(int) {
            complex re1 = *this;
            --re;
            return re1;
        }
    };
    complex sum(complex c, complex c2) {
        complex result;
        result.re = c2.re + c.re;
        result.im = c2.im + c.im;
        return result;
    }
    complex proizvedenie(complex c, complex c2) {
        complex result;
        result.re = c2.re * c.re - c2.im * c.im;
        result.im = c2.im * c.re + c2.re * c.im;
        return result;
    }
    complex operator -(complex c, complex c2) {
        complex result;
        result.re = c2.re - c.re;
        result.im = c2.im - c.im;
        return result;
    }
    complex operator / (complex c, complex c2) {
        complex result;
        result.re = (c2.re * c.re + c2.im * c.im)/(c.re * c.re + c.im * c.im);
        result.im = (c2.im * c.re - c2.re * c.im)/(c.re * c.re + c.im * c.im);
        return result;
    }
    ostream & operator <<(ostream &out, complex c) {
        if (c.im == 0) out << endl << c.re << endl;
        else if (c.re == 0) out << endl << c.im << "i" << endl;
        else if (c.im > 0) out << endl << c.re << "+" << c.im << "i" << endl;
        else out << endl << c.re << c.im << "i" << endl;
        return out;
    }
    istream & operator >> (istream &in, complex &c) {
        cout << "Enter a real part of the value: ";
        in >> c.re;
        cout << "Enter an imaginary part of the value: ";
        in >> c.im;
        return in;
    }
    int main() {
        complex z, x, y;
        double q, w;
        int number;
        do {
            cout << "==============" << endl;
            cout << "     MENU" << endl;
            cout << "==============" << endl;
            cout << "1. Getting of an absolute value" << endl;
            cout << "2. Addition (+)" << endl;
            cout << "3. Subtraction (-)" << endl;
            cout << "4. Multiplication (*)" << endl;
            cout << "5. Division (/)" << endl;
            cout << "6. Getting of a complex-conjuncted value" << endl;
            cout << "7. Exit" << endl;
            cout << "Enter an operation: ";
            cin >> number;
            if (number == 7)
            return 0;
            if (number > 0 && number < 5) {cin >> x >> y;} else {cin >> x;}
            switch (number) {
                case 1:
                    z = x + y;
                    cout << z;
                    break;
                case 2:
                    z = x - y;
                    cout << z;
                    break;
                case 3:
                    z = x * y;
                    cout << z;
                    break;
                case 4:
                    z = x / y;
                    cout << z;
                    break;
                case 5:
                    z = x.conjuncted();
                    cout << z;
                    break;
                case 6:
                    cout << endl << x.modul() << endl;
                    break;
                case 7:
                    break;
                default:
                    cout << "Wrong operation!" << endl;
            }
            system("pause");
        }
        while (number != 7);
        return 0;
    }
Добавлено через 21 минуту
Ошибки в строках 93–96 с re и im и с доступом к ним. Плюс, в строках 129, 133, 137, 141 и 145 — наблюдается двусмысленность оператора <<, от коей мне нужно избавиться.
0
Надоела реклама? Зарегистрируйтесь и она исчезнет полностью.
Similar
Эксперт
41792 / 34177 / 6122
Регистрация: 12.04.2006
Сообщений: 57,940
26.06.2013, 02:50
Здравствуйте! Я подобрал для вас темы с ответами на вопрос Нужно исправить ошибки в классе комплексных чисел (C++):

Работа с функциями в классе комплексных чисел - C++
Помогите пожалуйста прописать оставшийся код. Таким он работает, но вроде как ответы не правильные выходят... но с этим я справлюсь Вот...

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

Исправить ошибки в классе Fraction - C++
Требуется создать класс Fraction с двумя закрытыми переменными: числитель и знаменатель дроби (целые числа). Написать методы: ...

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

Калькулятор комплексных чисел. Помогите плз найти ошибки - C++
Написала програмку для работы с комплексными числами, с С++ знакома поверхностно и прога эта не работает :gsad: подскажите где я ошиблась,...

Нужно исправить ошибки - C++
Вот программа на c++ 6.0 выдает 6 ошибок и 1 warning, исправьте пожалуйста а то я уже 2 часа сижу вникнуть не могу #include &lt;iostream.h&gt;...

2
Kuzia domovenok
1891 / 1746 / 118
Регистрация: 25.03.2012
Сообщений: 5,926
Записей в блоге: 1
26.06.2013, 05:15 #2
C++
1
friend std::ostream & operator << (std::ostream & out, complex /* & убран */c);
1
Adamaras
0 / 0 / 0
Регистрация: 17.06.2013
Сообщений: 21
26.06.2013, 05:42  [ТС] #3
Спасибо вам)) Я уже не замечаю таких мелочей... эх... больше спать надо...
0
MoreAnswers
Эксперт
37091 / 29110 / 5898
Регистрация: 17.06.2006
Сообщений: 43,301
26.06.2013, 05:42
Привет! Вот еще темы с ответами:

Нужно исправить ошибки - C++
#include &lt;iostream&gt; #include &lt;string&gt; #include &lt;sstream&gt; #include &lt;algorithm&gt; #include &lt;iterator&gt; #include &lt;unordered_map&gt; ...

нужно исправить ошибки) - C++
// ConsoleApplication1.cpp: определяет точку входа для консольного приложения. // #include &quot;stdafx.h&quot; #include &lt;string&gt; #include...

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

Исправить ошибки в классе "Список строк" - C++
Построить класс СПИСОК СТРОК со свойствами: кол-во строк, динамический массив строк.Конструктор следует определить с одним параметром...


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

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

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