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

Работа с комплексными числами - C++

Восстановить пароль Регистрация
 
Noobass
0 / 0 / 0
Регистрация: 15.10.2012
Сообщений: 100
13.12.2012, 17:28     Работа с комплексными числами #1
Парни и девчушки (если тут такие есть ), у меня задание - создать класс, который может производить арифметические операции с комплексными числами. Я перегрузил операторы сложения, вычитания, умножения (объект-объект) и умножения (объект-число). Так вот, все вроде работает, но блин, у меня какие-то результаты "пугающие".. я если честно, в математике не силен, но по-моему моя прога считает их как-то неправильно, и непонятно из-за чего (операторы перегружены правильно, я все тщательно пересмотрел). Парни и девушки, кто силен в математике, помогите плиззз!!
Вот код:
Класс:
C++
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
#ifndef _COMPLEX0_H_
#define _COMPLEX0_H_
class Complex
{
private:
    double r_n;
    double i_n;
public:
    Complex();
    Complex(double real, double miracle);
    ~Complex();
    Complex operator+(Complex &st) const;
    Complex operator-(Complex &st) const;
    Complex operator*(Complex &st) const;
    Complex operator*(double n) const;
    Complex operator~();
    friend ostream & operator<<(ostream &os,const Complex &st);
    friend istream & operator>>(istream &is,Complex &st);
};
#endif
Описание элементов:
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
#include <iostream>
using namespace std;
#include "complex0.h"
Complex::Complex()
{
    r_n=0.0;
    i_n=0.0;
}
Complex::Complex(double real, double miracle)
{
    r_n=real;
    i_n=miracle;
}
Complex::~Complex()
{
}
Complex Complex::operator +(Complex &st) const
{
    Complex sum;
    sum.r_n=r_n+st.r_n;
    sum.i_n=i_n+st.i_n;
    return sum;
}
Complex Complex::operator -(Complex &st) const
{
    Complex diff;
    diff.r_n=r_n-st.r_n;
    diff.i_n=i_n-st.i_n;
    return diff;
}
Complex Complex::operator *(Complex &st) const
{
    Complex multip;
    multip.r_n=(r_n*st.r_n)-(i_n*st.i_n);
    multip.i_n=(r_n*st.i_n)+(i_n*st.r_n);
    return multip;
}
Complex Complex::operator *(double n) const
{
    Complex multip1;
    multip1.r_n=r_n*n;
    multip1.i_n=i_n*n;
    return multip1;
}
Complex Complex::operator ~()
{
    i_n=i_n*(-1);
    return *this;
}
ostream & operator<<(ostream &os,const Complex &st)
{
    os<<"("<<st.r_n<<","<<st.i_n<<"i)\n";
    return os;
}
istream & operator>>(istream &is,Complex &st)
{
    cout<<"Real:__\b\b";
    is>>st.r_n;
    cout<<"Imaginary:__\b\b";
    is>>st.i_n;
    return is;
}
Код проги для теста:
C++
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
#include <iostream>
using namespace std;
#include "complex0.h"
int main()
{
    Complex a=Complex(3.0,4.0);
    Complex c;
    cout<<"Enter a complex number (q to quit):\n";
    while(cin>>c)
    {
        cout<<"c is "<<c<<"\n";
        cout<<"Complex conjugate is "<<~c<<"\n";
        cout<<"a+c is "<<a+c<<"\n";
        cout<<"a-c is "<<a-c<<"\n";
        cout<<"a*c is "<<a*c<<"\n";
        cout<<"c*2 is "<<c*2<<"\n";
        cout<<"Enter a complex number (q to quit):\n";
    }
    cout<<"Done!\n";
    system("pause");
    return 0;
}
У меня есть одна догадка (только не смейтесь если что, я в программировании Нуб ): может данные подвергаются как говорится "непредсказуемым изменениям" в каком-либо месте проги? И если это так, то где именно?
Буду очень признателен, если растолкуете мне, что да как
Similar
Эксперт
41792 / 34177 / 6122
Регистрация: 12.04.2006
Сообщений: 57,940
13.12.2012, 17:28     Работа с комплексными числами
Посмотрите здесь:

Многочлен с комплексными числами C++
Помогите пожалуйста с комплексными числами C++
C++ Как работать с комплексными числами ?
Действия с комплексными числами C++
Функция с комплексными числами C++
C++ Заполнение массива комплексными числами
C++ Операции над комплексными числами
Операции над комплексными числами C++
Вычисления с комплексными числами C++
C++ Классы а С++, работа с комплексными числами
Класс по работе с комплексными числами C++
C++ Калькулятор с комплексными числами

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

Или воспользуйтесь поиском по форуму:
После регистрации реклама в сообщениях будет скрыта и будут доступны все возможности форума.
David Sylva
 Аватар для David Sylva
1283 / 945 / 51
Регистрация: 17.05.2012
Сообщений: 2,687
13.12.2012, 19:14     Работа с комплексными числами #2
Подобные задачи решали много раз, вот тут описан код Реализовать класс Complex для работы с комплексными числами
Откомпилируй и посмотри, какие результаты и сравни со своими.
Yandex
Объявления
13.12.2012, 19:14     Работа с комплексными числами
Ответ Создать тему
Опции темы

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