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

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

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

Операции и функции в работе в классе с комплексными числами С++ Visual Studio - C++

04.01.2015, 19:38. Просмотров 559. Ответов 3
Метки нет (Все метки)

Помогите пожалуйста. Написала программу, но считает и умножает комплексные числа не правильно. Раньше умножало нормально, но теперь не знаю что случилось
this->C.a this->C.b или C.a и C.b это первое комплексное число, ob1.C.a ob1.C.b ob.C.a ob.C.b второе

во всех задачах описать классовый тип (сначала - структуру, затем - класс с использованием структуры).
Кроме указанных в задании функций, для объекта заданного классового типа должны быть также реализованы следующие функции:

инициализация объекта init ();
ввода с клавиатуры input ();
вывода на экран output ();

Комплексное число задается парой действительных чисел (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).

Нужно дописать эти функции:
сравнения 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
Надоела реклама? Зарегистрируйтесь и она исчезнет полностью.
Similar
Эксперт
41792 / 34177 / 6122
Регистрация: 12.04.2006
Сообщений: 57,940
04.01.2015, 19:38
Здравствуйте! Я подобрал для вас темы с ответами на вопрос Операции и функции в работе в классе с комплексными числами С++ Visual Studio (C++):

Класс по работе с комплексными числами - C++
помогите пожалуйста разработать класс по работе с комплексными числами. Добавлено через 3 минуты наброски есть нужно подсказать что...

Операции над комплексными числами - C++
Дано вот такое задание: Написать программу на языке C++, реализующую арифметику комплекс- ных чисел. Должны быть как минимум определены...

Операции над комплексными числами - C++
В данной программе нужно создать дружескую функцию класса Komplex. Таким образом чтобы читалась строка с5=2+с1. Как это правильно сделать??...

Операции с комплексными числами и перегрузка операторов << и >> - C++
Здрасте! Пытаюсь решить задачу по написанию программы, которая производит действия с комплексными числами (если потребуется, объясню, что...

Операции над комплексными числами с использованием перегруженных операций - C++
Написать программу, выполняющую операции над комплексными числами, используя перегруженные операции.

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

3
tnk500
113 / 117 / 25
Регистрация: 25.08.2012
Сообщений: 1,292
Завершенные тесты: 3
04.01.2015, 20:55 #2
Raisa17, ну зачем такие функции сложения и умножения... Перегрузите операторы + и * (и все остальные, кстати говоря):
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
struct Complex              //ваша структура
{
    float a;
    float b;
};
 
class TTComplex             //ваш класс
{
    Complex number;
public:
    void operator+( const TTComplex & );
    void operator*( const TTComplex & );
    ...                     //остальные ваши функции
};
 
void TTComplex::operator+( const TTComplex& B)
{
    number.a += B.number.a;
    number.b += B.number.b;
}
 
void TTComplex::operator*( const TTComplex& B )
{
    number.a = number.a * B.number.a - number.b * B.number.b;
    number.b = number.a * B.number.b + number.b * B.number.a;
}
Да, у вас класс составлен не по правилам. Вместо init() нужно конструктор объявлять. Поэтому и ошибки (вроде как):
C++
1
2
3
4
TTComplex::TTComplex(float _a, float _b)
    : a(_a), b(_b)
{
}
А потом функция сложения:
C++
1
2
3
4
5
6
7
8
TTComplex TTComplex::add(const TTComplex& ob1)
{
    float _a,_b;
    _a = ob1.C.a + C.a;
    _b = ob1.C.b + C.b;
    TTComplex res( _a, _b );
    return res;
}
1
Raisa17
0 / 0 / 0
Регистрация: 25.11.2014
Сообщений: 20
04.01.2015, 21:27  [ТС] #3
Спасибо.
А что тогда с делением делать??

Добавлено через 4 минуты
С умножением все так же не то...
0
tnk500
113 / 117 / 25
Регистрация: 25.08.2012
Сообщений: 1,292
Завершенные тесты: 3
04.01.2015, 21:29 #4
Raisa17, а что вы сделали? Перегрузили те операции или написали конструктор и исправили старую функцию? Если первое, пишите void operator/( const TTComplex& B), с описанием, думаю, справитесь. Второе -- сделайте те же исправления что и в функции сложения.
1
04.01.2015, 21:29
MoreAnswers
Эксперт
37091 / 29110 / 5898
Регистрация: 17.06.2006
Сообщений: 43,301
04.01.2015, 21:29
Привет! Вот еще темы с ответами:

Операции с комплексными числами. Проконсультируйте. (аргумент, модуль, сложение, умножение, вычитание) - C++
здравствуйте. Эта программа рабочая, работает для аргумента, сложения, вычитания, умножения, модуля комплексных чисел. Проверьте её...

Структуры: арифметические операции (сложение, вычитание, умножение, деление) над комплексными числами - C++
Написать программу, реализующую арифметические операции (сложение, вычитание, умножение, деление), над комплексными числами. Использовать...

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

Вопрос по работе с файлами в Visual Studio - C++
Написал программу для работы с файлом в Visual Studio. Iostream подключил. Но такие вот привычные записи, как, например, ifstream...


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

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

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