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

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

15.03.2014, 20:12. Показов 3483. Ответов 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
0 / 0 / 0
Регистрация: 07.12.2013
Сообщений: 93
15.03.2014, 21:37  [ТС]
Студворк — интернет-сервис помощи студентам
Сложение и вычитание, как я понял, реализовано вот здесь.
C++
1
2
3
4
5
6
7
8
{
    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;
майновская функция, буквально только что была предложена. Я её использовал:
C++
1
2
3
4
5
6
void_main()
{
complex a(1,1),b(2,2),c;
c=a+b;
c.print();
}
Стало выводить такую ошибку:error C4430: отсутствует спецификатор типа - предполагается int. Примечание. C++ не поддерживает int по умолчанию...
0
7 / 5 / 2
Регистрация: 03.11.2012
Сообщений: 76
15.03.2014, 21:58
Может так?
C++
1
2
3
4
5
6
void main()
{
complex a(1.0,1.0),b(2.0,2.0),c;
c=a+b;
c.print();
}
0
0 / 0 / 0
Регистрация: 07.12.2013
Сообщений: 93
15.03.2014, 22:01  [ТС]
Нет. Также всё. Вбил в код - таже ошибка.
0
 Аватар для saden
184 / 168 / 53
Регистрация: 27.01.2013
Сообщений: 788
15.03.2014, 22:02
на какой строке ошибка?
чего касается?
0
0 / 0 / 0
Регистрация: 07.12.2013
Сообщений: 93
15.03.2014, 22:07  [ТС]
ошибка вот:
Ошибка 4 error C4430: отсутствует спецификатор типа - предполагается int. Примечание. C++ не поддерживает int по умолчанию c:\users\днс\documents\visual studio 2008\projects\с2\с2\с2.cpp 60

60-я строка. в этом коде:
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
#include "stdafx.h"
#include <iostream>
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;
}
void_main()
{
complex a(1.0,1.0),b(2.0,2.0),c;
c=a+b;
c.print();
}
т.е. ошибка в этом:
C++
1
2
void complex::print()
{
в этой фигурной скобке...
0
Модератор
Эксперт С++
 Аватар для zss
13773 / 10966 / 6491
Регистрация: 18.12.2011
Сообщений: 29,244
15.03.2014, 22:10
что это?
void_main()
Надо
Код C++
C++
1
void main()
0
 Аватар для saden
184 / 168 / 53
Регистрация: 27.01.2013
Сообщений: 788
15.03.2014, 22:11
C++
1
void_main()
->
C++
1
void main()
0
0 / 0 / 0
Регистрация: 07.12.2013
Сообщений: 93
15.03.2014, 22:17  [ТС]
Всё получилось. Выходит консолька с выводом: 3+i3; а где сами математические операции, я же их реализовывал?
0
2444 / 1842 / 406
Регистрация: 15.12.2013
Сообщений: 8,243
15.03.2014, 22:21
Цитата Сообщение от Ms Proger Посмотреть сообщение
Выходит консолька с выводом: 3+i3; а где сами математические операции, я же их реализовывал?
Все правильно выводит.
0
0 / 0 / 0
Регистрация: 07.12.2013
Сообщений: 93
15.03.2014, 22:25  [ТС]
Я непойму, а умножения: одно компл число умножается на другое компл число, аргумент, модуль. Как это делается в консольке/программе не разберусь.
0
 Аватар для saden
184 / 168 / 53
Регистрация: 27.01.2013
Сообщений: 788
15.03.2014, 22:25
замечательное слово "я"
Что не так с операциями-то???
0
Модератор
Эксперт С++
 Аватар для zss
13773 / 10966 / 6491
Регистрация: 18.12.2011
Сообщений: 29,244
15.03.2014, 22:27
C++
1
2
3
4
5
6
void main()
{
complex a(1.0,1.0),b(2.0,2.0),c;
c=a+b;
a.print();cout<<" + ";b.print();cout<<" = ";c.print();
}
0
 Аватар для saden
184 / 168 / 53
Регистрация: 27.01.2013
Сообщений: 788
15.03.2014, 22:27
меняешь
C++
1
c=a+b
на
C++
1
c=a-b;
или
C++
1
c=a*b
0
15.03.2014, 22:28

Не по теме:

Цитата Сообщение от saden Посмотреть сообщение
замечательное слово "я"
Скорее всего код другое "я" писало :)

0
 Аватар для saden
184 / 168 / 53
Регистрация: 27.01.2013
Сообщений: 788
15.03.2014, 22:30
модуль и аргумент пока не описаны. Это не стандартные операторы. Их надо описать как отдельные функции или методы класса. Но лучше, путем "я"
0
0 / 0 / 0
Регистрация: 07.12.2013
Сообщений: 93
15.03.2014, 22:34  [ТС]
Сам в курсе, что замечательное , еще такой вопрос:
вот это

C++
1
complex a(1.0,1.0),b(2.0,2.0),c;
что за числа 1,0,1,0 ?

и еще: аргумент, и модуль, как бы это странно не звучало, как узнать? напишите в коде, если не сложно)

Добавлено через 29 секунд
аа. про аргумент понял
0
2444 / 1842 / 406
Регистрация: 15.12.2013
Сообщений: 8,243
15.03.2014, 22:35
Цитата Сообщение от Ms Proger Посмотреть сообщение
что за числа 1,0,1,0 ?
Действительная и мнимая часть вашего числа.
0
0 / 0 / 0
Регистрация: 07.12.2013
Сообщений: 93
15.03.2014, 22:43  [ТС]
А умножение, имею ввиду i*i=-1 это используется? если используется, то где?
0
2444 / 1842 / 406
Регистрация: 15.12.2013
Сообщений: 8,243
15.03.2014, 22:46
Цитата Сообщение от Ms Proger Посмотреть сообщение
А умножение, имею ввиду i*i=-1 это используется? если используется, то где?
Вы хоть сам код смотрели?Там-же даже комментарий есть:

C++
1
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
0
0 / 0 / 0
Регистрация: 07.12.2013
Сообщений: 93
16.03.2014, 19:41  [ТС]
Спасибо большое вам)

Добавлено через 20 часов 52 минуты
здравствуйте. возникли такие вопросы по моей вчерашней теме комплексные числа.

вот в этом
C++
1
    complex newComplex(this->m_a - source.m_a, this->m_b - source.m_b);
что значит между source и m_a точка?
и что значит source и newComplex?
и такой момент: как понять это:"поразрядное И"?
0
Надоела реклама? Зарегистрируйтесь и она исчезнет полностью.
raxper
Эксперт
30234 / 6612 / 1498
Регистрация: 28.12.2010
Сообщений: 21,154
Блог
16.03.2014, 19:41
Помогаю со студенческими работами здесь

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

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

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

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

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


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

Или воспользуйтесь поиском по форуму:
40
Ответ Создать тему
Новые блоги и статьи
Ритм жизни
kumehtar 27.02.2026
Иногда приходится жить в ритме, где дел становится всё больше, а вовлечения в происходящее — всё меньше. Плотный график не даёт вниманию закрепиться ни на одном событии. Утро начинается с быстрых,. . .
SDL3 для Web (WebAssembly): Сборка библиотек SDL3 и Box2D из исходников с помощью CMake и Emscripten
8Observer8 27.02.2026
Недавно вышла версия SDL 3. 4. 2 библиотеки SDL3. На странице официальной релиза доступны исходники, готовые DLL (для x86, x64, arm64), а также библиотеки для разработки под Android, MinGW и Visual. . .
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
«Знание-Сила» «Время-Деньги» «Деньги -Пуля»
КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin
Copyright ©2000 - 2026, CyberForum.ru