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

Работа с функциями в классе комплексных чисел - C++

Войти
Регистрация
Восстановить пароль
Другие темы раздела
C++ нелинейные уравнения методом ньютона (с Паскаля в С++) http://www.cyberforum.ru/cpp-beginners/thread1311085.html
есть код в Паскале. помогите перевести в С++. program Newtons_method; uses crt; var a,b,c,E,sol,xp,x:real; n:integer; function f(u:real):real; begin
C++ Тесты Привет всем к вам просьба кто может вот вопрос 7 Вопрос 7 Когда происходит динамическое связывания ответ а во время связоования ответ B во воремя инкапсуляции ответ С во время камиляции http://www.cyberforum.ru/cpp-beginners/thread1311084.html
C++ Определить, возрастают ли монотонно числа в заданной последовательности
{ int a={1,8,56,98,25,-9,45,64,17,5,79}; for (int k = 0; k < 12; k++) { bool swaped=false; for (int i = 0; i < 12-1; i++) { if (a>a) { swaped =true;
C++ Реализовать произвольное сильноветвящееся дерево
Помогите реализовать произвольное сильноветвящееся дерево и основные функции .
C++ Повышение производительности программы http://www.cyberforum.ru/cpp-beginners/thread1311054.html
Добрый вечёр. У меня вопрос. Предопложим у нас есть масив: int numbers; чтобы обратиться к елементу масива используем numbers но во время компиляции с++ переводит такое обращение в обращение...
C++ Очередь как однанаправленные линейный список целых чисел задана максимальная длина очереди -N функции: Помогите решить задачу!Заранее благодарен. Очередь как однанаправленные линейный список целых чисел задана максимальная длина очереди -N функции: поместить значение в очередь( функцию добавлять... подробнее

Показать сообщение отдельно
Raisa17
0 / 0 / 0
Регистрация: 25.11.2014
Сообщений: 20
02.01.2015, 12:20  [ТС]
Помогите пожалуйста в написании функции умножения (mul) и деления (div) для комплексных чисел. они Прописаны, но все равно работают не правильно.
В программе для комплексного числа х1=а1+b1i : a1- this->C.a, b2- this->C.b или C.a и C.b;
а для х2=а2+b2i : a1- ob1.C.a, b2- ob1.C.b

Тип данных задается классом. Член-данные класса - одна частная переменная структурного типа, члены-функции класса - открытые неоператорные функции init(), input(), output(), toPChar() и функции доступа setStruct(), getStruct() или setVar(), getVar().

5. Комплексное число задается парой действительных чисел (a, b), где a - действительная часть, b - мнимая часть. Реализовать тип TComplex для работы с комплексными числами. Обязательно наличие функций:
сложение add(), (a, b) + (c, d);
вычитание sub(), (a, b) - (c, d);
умножение mul(), (a, b) * (c, d);
деление div(), (a, b) / (c, d);
сравнение equ(), (a, b) = (c, d);
сопряженное число conj(a, b).

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
#include "stdafx.h"
#include <iostream>
using namespace std;
 
struct TComplex
{
  float a,b;
};
class TTComplex
{
protected:
    TComplex C;
public:
    TTComplex add(const TTComplex&);
    TTComplex sub(const TTComplex&);
    TTComplex mul(const TTComplex&);
    TTComplex div(const TTComplex&);
    bool equ(const TTComplex&);
    TTComplex conj();
    void init(float,float);
    void input();
    void output();
    char* toPChar();
    friend ostream& operator<<(ostream& os,TTComplex& ob);
    void setStruct(TComplex _c);
    TComplex getStruct();
    };
void TTComplex::setStruct(TComplex _c)
{ C=_c;
}
TComplex TTComplex::getStruct()
{ return C;
 }
 
void TTComplex::init(float _a,float _b)
{
    C.a=_a;
    C.b=_b;
}
void TTComplex::input()
{
    float _a,_b;
    cout<<"Введите целую часть (a):"<<endl;
    cin>>_a;
    cout<<"Введите вещественную часть (b):"<<endl;
    cin>>_b;
    this->init(_a,_b);
}
void TTComplex::output()
{
    cout<<""<<C.a<<"+"<<C.b<<"i"<<endl;
}
TTComplex TTComplex::add(const TTComplex& ob1)
{
    TTComplex res;
    float _a,_b;
    _a=ob1.C.a+C.a;
    _b=ob1.C.b+C.b;
    res.init(_a,_b);
    return res;
}
TTComplex TTComplex::sub(const TTComplex& ob1)
{
    TTComplex res;
    float _a,_b;
    _a=ob1.C.a-C.a;
    _b=ob1.C.b-C.b;
    res.init(_a,_b);
    return res;
}
TTComplex TTComplex::mul(const TTComplex& ob1)
{
    TTComplex res;
    float _a,_b;
    _a=(this->C.a*ob1.C.a-this->C.b*ob1.C.b);
    _b=(this->C.a*ob1.C.b+this->C.a*ob1.C.a);
    res.init(_a,_b);
    return res;
}
TTComplex TTComplex::div(const TTComplex& ob)
{
    TTComplex res;
    float _a,_b;
    _a=((this->C.a*ob1.C.a+this->C.b*ob1.C.b)/(ob1.C.a*ob1.C.a+ob1.C.b*ob1.C.b));
    _b=((this->C.b*ob1.C.a-this->C.a*ob1.C.b)/(ob1.C.a*ob1.C.a+ob1.C.b*ob1.C.b));
    res.init(_a,_b);
    return res;
}
bool TTComplex::equ(const TTComplex& ob1)
{
    if((C.a==ob1.C.a)&&(C.b=ob1.C.b)) return 1;
    return 0;
}
TTComplex TTComplex::conj()
{
    TTComplex res;
    float _b=-C.b;
    float _a=C.a;
    res.init(_a,_b);
    return res;
}
 
int main()
{  setlocale(LC_ALL, "Russian"); 
    TTComplex ob1,ob2,res;
    ob1.input();
    ob2.input();
    cout<<"Сложение: "<<endl;
    res=ob1.add(ob2);
    res.output();
    cout<<"-----------------"<<endl;
    cout<<"Вычитание "<<endl;
    res=ob1.sub(ob2);
    res.output();
    cout<<"-----------------"<<endl;
    cout<<"Умножение: "<<endl;
    res=ob1.mul(ob2);
    res.output();
    cout<<"-----------------"<<endl;
    cout<<"Деление: "<<endl;
    res=ob1.div(ob2);
    res.output();
    cout<<"-----------------"<<endl;
    cout<<"Сравнение: "<<ob1.equ(ob2)<<endl;
    cout<<"-----------------"<<endl;
    cout<<"Сопряженная:"<<endl;
    res=ob1.conj();
    res.output();
    cout<<"-----------------"<<endl;
    
    TComplex d;
    cout<<"setStruct"<<endl;
    cout<<"a";
    cin>>d.a;
    cout<<"b";
    cin>>d.b;
    ob1.setStruct(d);
    cout<<"getStruct"<<endl;
    
    d=ob1.getStruct();
    cout<<d.a<<" +"<<d.b<<"i"<<endl;
 
system("pause");
return 0;
}
0
 
КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin® Version 3.8.9
Copyright ©2000 - 2017, vBulletin Solutions, Inc.
Рейтинг@Mail.ru