Форум программистов, компьютерный форум, киберфорум
С++ для начинающих
Войти
Регистрация
Восстановить пароль
Блоги Сообщество Поиск Заказать работу  
 
 
Рейтинг 4.60/15: Рейтинг темы: голосов - 15, средняя оценка - 4.60
0 / 0 / 0
Регистрация: 07.12.2013
Сообщений: 93

Комплексные числа. Реализовать класс и математические операции

15.03.2014, 20:12. Показов 3479. Ответов 52
Метки нет (Все метки)

Студворк — интернет-сервис помощи студентам
Здравствуйте. Тема-комплексные числа. Надо: реализовать класс, следом надо реализовать математические операции, а именно: (+,-,*,Arg, ||);я реализовал класс complex; теперь не могу понять, как реализовать математические операции. Подскажите, пожалуйста. Вот начало программы (реализация класса и прога выводит на экран число в виде a+i*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
#include "stdafx.h"
#include <iostream>
using namespace std;
 
class complex
{
private:
    double m_a;
    double m_b;
    
public:
    complex();
    complex (double a, double b);
    void print();
};
 
complex::complex()
{
    m_a = 0.0;
    m_b = 0.0;
}
 
complex::complex (double a, double b)
{
    m_a = a;
    m_b = b;
}
 
void complex::print()
{
    cout << m_a << "+i" << m_b << endl;
}
 
int _tmain()
{
    complex a, b;
    cout<<"a= \n";
    cout<<"b= \n";
        
    complex *c = new complex(10, 20);
    c->print();
    return 0;
0
cpp_developer
Эксперт
20123 / 5690 / 1417
Регистрация: 09.04.2010
Сообщений: 22,546
Блог
15.03.2014, 20:12
Ответы с готовыми решениями:

Арифметические операции. Комплексные числа
Была поставлена задача: class Complex Смешанная арифметика ( перегрузка операторов) Как я понял я должен перевести выражение из...

Реализовать класс MyArray, который бы поддерживал индексные операции, операции сложения, вычитания, умножения, деления
Необходимо реализовать класс MyArray, который бы поддерживал индексные операции, операции сложения, вычитания, умножения, деления. А также...

Комплексные числа, и функции, выполняющие операции над ними
Дали на Д/З создать тип комплексных чисел и функцию для операций над этими числами. Весь интернет перерыл, (почти весь :D ) так и не...

52
 Аватар для saden
184 / 168 / 53
Регистрация: 27.01.2013
Сообщений: 788
15.03.2014, 20:22
C++
1
2
3
4
complex & operator +(complex x1, commplex x2)
{
body
}
Добавлено через 1 минуту
либо в описании класса
C++
1
2
3
4
5
6
7
class
{
 
complex & operator +(complex x)
{
body with m_a, m_b
}
0
0 / 0 / 0
Регистрация: 07.12.2013
Сообщений: 93
15.03.2014, 20:22  [ТС]
Эмм, можете подробнее объяснить суть этого? ( я новичок)
0
 Аватар для saden
184 / 168 / 53
Регистрация: 27.01.2013
Сообщений: 788
15.03.2014, 20:26
если надо перегрузить готовый оператор (типа +) пишем
C++
1
operator +
и используем как обычную ф-цию (с тем же телом, что и далее). Если надо создать свой метод
C++
1
2
3
4
5
copmlex plus(complex x1, complex x2)
{ complex tmp(x1.m_a,x1.m_b);
tmp.m_a+=x2.ma;
tmp.m_b+=x2.m_b;
return tmp;
0
0 / 0 / 0
Регистрация: 07.12.2013
Сообщений: 93
15.03.2014, 20:31  [ТС]
"operator +" - это одна из математических операций, верно?
"tmp." - это что?
и следует ли раскрывать суть сложения комплексных чисел? как в математике, приводить подобные и т.д.. Если нет, тогда что надо сделать?
0
 Аватар для saden
184 / 168 / 53
Регистрация: 27.01.2013
Сообщений: 788
15.03.2014, 20:34
эмм, я думал, это Вы сами написали класс. Надо предупреждать...

Есть такой оператор +. Его используют в обычных выражениях типа а=х+2. Он работает для стандартных типов, но может быть переопределен (перегружен) для собственных типов. Пример показан выше.

tmp - временная переменная для хранения результата внутри функции. Приводить подобные надо лишь там, где это надо. В сложении - нет. В умножении - да
0
7 / 5 / 2
Регистрация: 03.11.2012
Сообщений: 76
15.03.2014, 20:37
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
using namespace std;
 
class complex
{
private:
    double m_a;
    double m_b;
    
public:
    complex();
    complex (double a, double b);
 
    complex &operator+ (const complex&);
    complex &operator- (const complex&);
    complex &operator* (const complex&);
 
    void print();
};
 
complex::complex()
{
    m_a = 0.0;
    m_b = 0.0;
}
 
complex::complex (double a, double b)
{
    m_a = a;
    m_b = b;
}
 
// Функции +, -, * соответственно: 
 
complex &complex :: operator+ (const complex &source)
{
    complex newComplex(this->m_a + source.m_a, this->m_b + source.m_b);
    return newComplex;
}
complex &complex :: operator- (const complex &source)
{
    complex newComplex(this->m_a - source.m_a, this->m_b - source.m_b);
    return newComplex;
}
complex &complex :: operator* (const complex &source)
{
    complex newComplex(this->m_a * source.m_a - this->m_b * source.m_b, this->m_a * source.m_b + this->m_b * source.m_a); // вычисление (a+bi)(c+di) = a*c-b*d + (a*d+b*c)i
    return newComplex;
}
 
void complex::print()
{
    cout << m_a << "+i" << m_b << endl;
}
0
 Аватар для saden
184 / 168 / 53
Регистрация: 27.01.2013
Сообщений: 788
15.03.2014, 20:38
AGS17, рнр-ст? В С++ конструкция this-> необязательна))
0
7 / 5 / 2
Регистрация: 03.11.2012
Сообщений: 76
15.03.2014, 20:39
На самом деле я С++ уже не сильно и помню)
0
0 / 0 / 0
Регистрация: 07.12.2013
Сообщений: 93
15.03.2014, 20:49  [ТС]
вбил код, предложенный AGS17 выдало 2 ошибки:
1>MSVCRTD.lib(crtexe.obj) : error LNK2019: ссылка на неразрешенный внешний символ _main в функции ___tmainCRTStartup

1>C:\Users\днс\Documents\Visual Studio 2008\Projects\С2\Debug\С2.exe : fatal error LNK1120: 1 неразрешенных внешних элементов

что это значит? если можете, пожалуйста поясните.
0
7 / 5 / 2
Регистрация: 03.11.2012
Сообщений: 76
15.03.2014, 20:57
Раньше этой ошибки не было? Покажи реализацию мэйновской функции
0
 Аватар для saden
184 / 168 / 53
Регистрация: 27.01.2013
Сообщений: 788
15.03.2014, 20:57
находить ошибки в коде - дело привычное.
коды по ошибкам - ...

Давай код. В примере код не полный...
0
0 / 0 / 0
Регистрация: 07.12.2013
Сообщений: 93
15.03.2014, 21:10  [ТС]
Цитата Сообщение от AGS17 Посмотреть сообщение
using namespace std;
class complex
{
private:
* * double m_a;
* * double m_b;
public:
* * complex();
* * complex (double a, double b);
complex &operator+ (const complex&);
* * complex &operator- (const complex&);
* * complex &operator* (const complex&);
void print();
};
complex::complex()
{
* * m_a = 0.0;
* * m_b = 0.0;
}
complex::complex (double a, double b)
{
* * m_a = a;
* * m_b = b;
}
// Функции +, -, * соответственно:
complex &complex :: operator+ (const complex &source)
{
* * complex newComplex(this->m_a + source.m_a, this->m_b + source.m_b);
* * return newComplex;
}
complex &complex :: operator- (const complex &source)
{
* * complex newComplex(this->m_a - source.m_a, this->m_b - source.m_b);
* * return newComplex;
}
complex &complex :: operator* (const complex &source)
{
* * complex newComplex(this->m_a * source.m_a - this->m_b * source.m_b, this->m_a * source.m_b + this->m_b * source.m_a); // вычисление (a+bi)(c+di) = a*c-b*d + (a*d+b*c)i
* * return newComplex;
}
void complex:rint()
{
* * cout << m_a << "+i" << m_b << endl;
}
я вбил вот этот код. Точь-в-точь. Выдало ошибки. Я непойму что я делаю неверно. Может надо что то добавить / исключить из этого кода?
0
7 / 5 / 2
Регистрация: 03.11.2012
Сообщений: 76
15.03.2014, 21:16
* * cout << m_a << "+i" << m_b << endl;

что за звёзды впереди?
0
 Аватар для saden
184 / 168 / 53
Регистрация: 27.01.2013
Сообщений: 788
15.03.2014, 21:16
нет главной ф-ции (main)
и непонятно, что за звездочки - это глюки копирования или так и есть?
0
0 / 0 / 0
Регистрация: 07.12.2013
Сообщений: 93
15.03.2014, 21:20  [ТС]
Да. Это глюки копирования. Это - я так понял - двойные пробелы. Я использовал (проще говоря скопировал) функцию, AGS17, предложенную почти в самом начале форума.
0
 Аватар для saden
184 / 168 / 53
Регистрация: 27.01.2013
Сообщений: 788
15.03.2014, 21:21
остается вопрос по главной ф-ции.
судя по тексту ошибки сборщик ее просто не находит
0
0 / 0 / 0
Регистрация: 07.12.2013
Сообщений: 93
15.03.2014, 21:24  [ТС]
Куда её можно "влепить"...(главную функцию). Помогите. Вопросов много у меня, я просто недавно начал изучать С++...
0
 Аватар для saden
184 / 168 / 53
Регистрация: 27.01.2013
Сообщений: 788
15.03.2014, 21:27
эва как!
после скопированного кода пиши
C++
1
2
3
4
5
6
main()
{
complex a(1,1),b(2,2),c;
c=a+b;
c.print();
}
0
7 / 5 / 2
Регистрация: 03.11.2012
Сообщений: 76
15.03.2014, 21:27
Как реализовано сложение/вычитание?

Добавлено через 39 секунд
Где вообще main-функция?
0
Надоела реклама? Зарегистрируйтесь и она исчезнет полностью.
raxper
Эксперт
30234 / 6612 / 1498
Регистрация: 28.12.2010
Сообщений: 21,154
Блог
15.03.2014, 21:27
Помогаю со студенческими работами здесь

Математические операции для дробного числа ( заданного структурой )
Структура: struct TFraction { long ing; // целая часть unsigned short frc; //дробная часть unsigned short count;...

Объект «комплексные числа». Операции определяются по обще принятым формулам
Не могу решить задачу, как делать не пойму, искал в интернете не помогло. Спасибо! Объект «комплексные числа». Операции определяются по...

Класс комплексные числа
Всем привет. Нужна небольшая помощь по коду: в созданных классах Trigonometric и Exponential, в методах для преобразования чисел в эти...

Класс Комплексные числа
Помогите, пожалуйста, разобраться с компиляцией, выдает ошибки типа |113|error: no match for 'operator&lt;&lt;' (operand types are...

Поменять цифры заданного двузначного числа местами, используя математические операции
Ввести двузначное число a. Поменять цифры числа местами используя математические операции


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

Или воспользуйтесь поиском по форуму:
20
Ответ Создать тему
Новые блоги и статьи
SDL3 для Web (WebAssembly): Реализация движения на Box2D v3 - трение и коллизии с повёрнутыми стенами
8Observer8 20.02.2026
Содержание блога Box2D позволяет легко создать главного героя, который не проходит сквозь стены и перемещается с заданным трением о препятствия, которые можно располагать под углом, как верхнее. . .
Конвертировать закладки radiotray-ng в m3u-плейлист
damix 19.02.2026
Это можно сделать скриптом для PowerShell. Использование . \СonvertRadiotrayToM3U. ps1 <path_to_bookmarks. json> Рядом с файлом bookmarks. json появится файл bookmarks. m3u с результатом. # Check if. . .
Семь CDC на одном интерфейсе: 5 U[S]ARTов, 1 CAN и 1 SSI
Eddy_Em 18.02.2026
Постепенно допиливаю свою "многоинтерфейсную плату". Выглядит вот так: https:/ / www. cyberforum. ru/ blog_attachment. php?attachmentid=11617&stc=1&d=1771445347 Основана на STM32F303RBT6. На борту пять. . .
Камера Toupcam IUA500KMA
Eddy_Em 12.02.2026
Т. к. у всяких "хикроботов" слишком уж мелкий пиксель, для подсмотра в ESPriF они вообще плохо годятся: уже 14 величину можно рассмотреть еле-еле лишь на экспозициях под 3 секунды (а то и больше),. . .
И ясному Солнцу
zbw 12.02.2026
И ясному Солнцу, и светлой Луне. В мире покоя нет и люди не могут жить в тишине. А жить им немного лет.
«Знание-Сила»
zbw 12.02.2026
«Знание-Сила» «Время-Деньги» «Деньги -Пуля»
SDL3 для Web (WebAssembly): Подключение Box2D v3, физика и отрисовка коллайдеров
8Observer8 12.02.2026
Содержание блога Box2D - это библиотека для 2D физики для анимаций и игр. С её помощью можно определять были ли коллизии между конкретными объектами и вызывать обработчики событий столкновения. . . .
SDL3 для Web (WebAssembly): Загрузка PNG с прозрачным фоном с помощью SDL_LoadPNG (без SDL3_image)
8Observer8 11.02.2026
Содержание блога Библиотека SDL3 содержит встроенные инструменты для базовой работы с изображениями - без использования библиотеки SDL3_image. Пошагово создадим проект для загрузки изображения. . .
КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin
Copyright ©2000 - 2026, CyberForum.ru