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

Класс комплексных чисел - C++

Восстановить пароль Регистрация
 
Рейтинг: Рейтинг темы: голосов - 76, средняя оценка - 4.66
Swee
0 / 0 / 0
Регистрация: 25.08.2010
Сообщений: 9
30.08.2010, 17:52     Класс комплексных чисел #1
Ребят, помогите пожалуйста написать класс комплексных чисел... Я плохо разбираюсь в объектно-ориентированном программировании, учусь, покажите плиз!
Similar
Эксперт
41792 / 34177 / 6122
Регистрация: 12.04.2006
Сообщений: 57,940
30.08.2010, 17:52     Класс комплексных чисел
Посмотрите здесь:

C++ класс для обработки комплексных чисел
C++ Класс комплексных чисел
Класс комплексных чисел C++
C++ Класс комплексных чисел(подправить)
C++ Класс комплексных чисел
После регистрации реклама в сообщениях будет скрыта и будут доступны все возможности форума.
Andrew_Lvov
Эксперт C++
 Аватар для Andrew_Lvov
259 / 189 / 5
Регистрация: 19.08.2010
Сообщений: 758
Записей в блоге: 1
30.08.2010, 19:16     Класс комплексных чисел #2
Ты начни, а мы поможем!
Swee
0 / 0 / 0
Регистрация: 25.08.2010
Сообщений: 9
30.08.2010, 19:33  [ТС]     Класс комплексных чисел #3
Сие чудо не компилируется! Не могу понять почему.. ругается на хедеры по большей мере...пишу например без .h, но всеравно ерунда какая-то!

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
#include <iostream.h>
#include <conio.h>
#include <math.h>
 
class Complex // класс комплексных чисел
{
   double re, im; // целая и мнимая части
 
// создаем конструкторы   
public:
 
   Complex() {};
 
   Complex (double r) // конструктор по умолчанию
   {
      re = r; 
      im = 0;
   }
 
   Complex (double r, double i) // конструктор по умолчанию
   {
      re = r; 
      im = i;
   } 
 
   Complex (Complex &c) // конструктор копирования
   {
      re = c.re; 
      im = c.im;
   }
 
   ~Complex() {}
 
   float abs() // Модуль комплексного числа
   {
      return sqrt(re * re - im * im);
   }     
 
   Complex & operator = (Complex &c) // перегрузка оператора присваивания
   {
      re = c.re;
      im = c.im;
 
      return (*this);
   }
 
   Complex Complex::operator + (Complex &c) // перегрузка оператора сложения
   {
      Complex temp;
 
      temp.re = re + c.re;
      temp.im = im + c.re;
 
      return temp;
   }
 
   Complex Complex::operator - (Complex &c) // перегрузка оператора вычитания
   {
      Complex temp;
 
      temp.re = re - c.re;
      temp.im = im - c.re;
 
      return temp;
   }
 
   Complex Complex::operator * (Complex &c) // перегрузка оператора умножения
   {
      Complex temp;
 
      temp.re = re*c.re;
      temp.im = re*c.im;
 
      return temp;
   }
 
   Complex Complex::operator / (Complex &c) // перегрузка оператора деления
   {
      Complex temp;
 
      double r = c.re * c.re + c.im * c.im;
      temp.re = (re * c.re + im * c.im) / r;
      temp.re = (im * c.re - re * c.im) / r;
 
      return temp;
   }   
 
   friend ostream &operator<<(ostream &, Complex &); // перегрузка оператора <<
   friend istream &operator>>(istream &, Complex &); // перегрузка оператора >>
 
};
 
ostream &operator<<(ostream &out, complex &c)
{
   out << "(" << c.re << ") + I (" << c.im << "\n";
 
   return out;
}
 
istream &operator>>(istream &in, Complex &c)
{
   in >> c.re >> c.im;
 
   return in;
}
 
int main()
{
    Complex value1(5,2);
    Complex value2(3,-3);
 
    cout << value1 << " " << value2 << endl;
 
    cout << value1 + value2 << endl;
 
    cout << value1 - value2 << endl;
 
    cout << value1 * value2 << endl;
 
    cout << value1 / value2 << endl;    
 
    value1 = value2;
 
    cout << value1 << " = " << value2 << endl;
 
    return 0;
}
Andrew_Lvov
Эксперт C++
 Аватар для Andrew_Lvov
259 / 189 / 5
Регистрация: 19.08.2010
Сообщений: 758
Записей в блоге: 1
30.08.2010, 19:57     Класс комплексных чисел #4
Используй <iostream>, без .h
Пиши либо std::cout, либо перед ф-цией main() напиши using std::cout;
C std::endl, std::istream, std::ostream аналогично.

Добавлено через 3 минуты
А, да. Укажи, каким компилятором и средой разработки пользуешься.

Добавлено через 5 минут
Complex::fn() при определении функции пишеться только извне класса.

Добавлено через 29 секунд
conio.h здесь не используется.

Добавлено через 12 минут
Вот
код
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
#include <iostream>
#include <math.h>
 
using namespace std;
 
 
class Complex // класс комплексных чисел
{
    double re, im; // целая и мнимая части
 
    // создаем конструкторы   
    public:
 
    Complex() {};
 
    Complex (double r) // конструктор по умолчанию
    {
        re = r; 
        im = 0;
    }
 
    Complex (double r, double i) // конструктор по умолчанию
    {
        re = r; 
        im = i;
    } 
 
    Complex (Complex &c) // конструктор копирования
    {
        re = c.re; 
        im = c.im;
    }
 
    ~Complex() {}
 
    float abs() // Модуль комплексного числа
    {
        return sqrt(re * re - im * im);
    }     
 
    Complex & operator = (Complex &c) // перегрузка оператора присваивания
    {
        re = c.re;
        im = c.im;
 
        return (*this);
    }
 
    Complex operator + (Complex &c) // перегрузка оператора сложения
    {
        Complex temp;
 
        temp.re = re + c.re;
        temp.im = im + c.re;
 
        return temp;
    }
 
    Complex operator - (Complex &c) // перегрузка оператора вычитания
    {
        Complex temp;
 
        temp.re = re - c.re;
        temp.im = im - c.re;
 
        return temp;
    }
 
    Complex operator * (Complex &c) // перегрузка оператора умножения
    {
        Complex temp;
 
        temp.re = re*c.re;
        temp.im = re*c.im;
 
        return temp;
    }
 
    Complex operator / (Complex &c) // перегрузка оператора деления
    {
        Complex temp;
 
        double r = c.re * c.re + c.im * c.im;
        temp.re = (re * c.re + im * c.im) / r;
        temp.re = (im * c.re - re * c.im) / r;
 
        return temp;
    }   
 
    friend ostream &operator<<(ostream &, const Complex &); // перегрузка оператора <<
    friend istream &operator>>(istream &, const Complex &); // перегрузка оператора >>
 
};
 
ostream &operator<<(ostream &out, const Complex &c)
{
    out << c.re;
    if( c.im > 0 )
        out << "+";
    out << c.im << "i";
 
    return out;
}
 
istream &operator>>(istream &in, const Complex &c)
{
    in >> c.re >> c.im;
 
    return in;
}
 
int main()
{
    Complex value1(5,2);
    Complex value2(3,-3);
 
    cout << value1 << "; " << value2 << endl;
 
    cout << value1 + value2 << endl;
 
    cout << value1 - value2 << endl;
 
    cout << value1 * value2 << endl;
 
    cout << value1 / value2 << endl;    
 
    value1 = value2;
 
    cout << value1 << " = " << value2 << endl;
 
    return 0;
}
, но лучше, если сначала попробуешь разобраться сам.
Manjak
 Аватар для Manjak
268 / 174 / 7
Регистрация: 12.03.2010
Сообщений: 494
30.08.2010, 20:21     Класс комплексных чисел #5
Для примера посмотри complex из STL
Somebody
2770 / 1583 / 141
Регистрация: 03.12.2007
Сообщений: 4,139
Завершенные тесты: 1
30.08.2010, 21:03     Класс комплексных чисел #6
Надо бы
C++
1
Complex Complex::operator * (Complex &c)

C++
1
Complex Complex::operator * (const Complex &c) const
Аналогично в остальных случаях.
Можно
C++
1
2
3
4
5
6
7
8
9
10
11
12
13
   Complex() {};
 
   Complex (double r) // конструктор по умолчанию
   {
      re = r; 
          im = 0;
   }
 
   Complex (double r, double i) // конструктор по умолчанию
   {
      re = r; 
          im = i;
   }

C++
1
Complex (double r = 0.0, double i = 0.0) : re(r), im(im) {}
MoreAnswers
Эксперт
37091 / 29110 / 5898
Регистрация: 17.06.2006
Сообщений: 43,301
30.08.2010, 22:14     Класс комплексных чисел
Еще ссылки по теме:

класс комплексных чисел C++
C++ Класс комплексных чисел
C++ Класс Комплексных Чисел

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

Или воспользуйтесь поиском по форуму:
alex_x_x
бжни
 Аватар для alex_x_x
2441 / 1646 / 84
Регистрация: 14.05.2009
Сообщений: 7,163
30.08.2010, 22:14     Класс комплексных чисел #7
http://www.cyberforum.ru/cpp-beginne...read84458.html
Обьектно ориентированное програмирование
Ввести структуру для описания комплексного числа
http://www.cyberforum.ru/cpp-beginne...ead133229.html

итд
Yandex
Объявления
30.08.2010, 22:14     Класс комплексных чисел
Ответ Создать тему
Опции темы

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