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

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

Войти
Регистрация
Восстановить пароль
Другие темы раздела
C++ два динамических массива. один не заполняется http://www.cyberforum.ru/cpp-beginners/thread730457.html
моя цель: создать две динамических матрицы (они называются massiv и degree) как я это делаю: cout <<"Vvedite kolichestvo vershin: "; cin >> n; int **massiv = new int*; for(k= 0; k < n; k++)...
C++ Работаю с файлом *.txt. Прога ведет себя странно если последняя строка файла пуста. Почему так? Добрый день! Помогите пожалуйста с небольшой проблемой. Что хотел сделать: Есть текстовый файл, в нем содержатся любые последовательности символов разделенные пробельными символами (пробелом,... http://www.cyberforum.ru/cpp-beginners/thread730450.html
C++ Разработать С + +-программу с использованием файлов (Фибоначчи)
!!!!Помогите срочно!!!! Создать С + +-программу отображения на экране последовательности первых К чисел Фибоначчи, которые вычисляются по следующему правилу: F_1 = 1; F_2 = 1; F_n = F_ (n-1) + F_...
C++ iconv
Есть такая библиотека как iconv для преобразования кодировок http://www.cyberforum.ru/blogs/131347/blog533.html Стоит задача написать простенькую обвертку для преобразования utf8 в win1251 в...
C++ Проверка многоугольника на выпуклость http://www.cyberforum.ru/cpp-beginners/thread730427.html
Здравствуйте. Не заходит вырезано задача. Не могу понять, почему. Проверял на схожесть знаков ориентированные площади треугольников из точек. Код: #include <iostream> #include <vector>...
C++ Перевод из 2-ой в 8-ую СС Необходимо реализовать перевод чисел из двоичной в восьмеричную систему счисления. подробнее

Показать сообщение отдельно
Noobass
0 / 0 / 0
Регистрация: 15.10.2012
Сообщений: 100

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

13.12.2012, 17:28. Просмотров 538. Ответов 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;
}
У меня есть одна догадка (только не смейтесь если что, я в программировании Нуб ): может данные подвергаются как говорится "непредсказуемым изменениям" в каком-либо месте проги? И если это так, то где именно?
Буду очень признателен, если растолкуете мне, что да как
0
Надоела реклама? Зарегистрируйтесь и она исчезнет полностью.
 
КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin® Version 3.8.9
Copyright ©2000 - 2017, vBulletin Solutions, Inc.
Рейтинг@Mail.ru