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

Операции над комплексными числами

07.12.2013, 18:24. Показов 5350. Ответов 4
Метки нет (Все метки)

Студворк — интернет-сервис помощи студентам
Дано вот такое задание:
Написать программу на языке C++, реализующую арифметику комплекс-
ных чисел. Должны быть как минимум определены операторы +, +=, -,
-=, *, *=, /, /=, = , допускающие построение арифметических выраже-
ний в том виде, в каком они справедливы для double, а также позволяющие
в одном выражении смешивать комплексные и вещественные числа. Опре-
делите функции arg,mod, Re, Im.
Предусмотреть возможность печати комплексных чисел любым удобным
способом.
Текстовымпредставлениемкомплексного числа считать строки вида a±bi,
где a, b — представления чисел типа double.

Моя программа, но она не считает должным образом, в чем подвох?
C++ (Qt)
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
#include <iostream>
#include <cstring>
#include <cmath>
#include <cstdlib>
using namespace std;
 
class Komplex{
    public:
        Komplex() {}
        Komplex(double r);// {re = 0; im = 0;}
        Komplex(double r, double i) { re = r, im = i; }
        ~Komplex() {}
double real () const {return re; }
 
double imag () const {return im; }
        //double arg () const {return arg; }
        //double mod () const {return mod; }
        Komplex& operator +( const Komplex &rhs );
        Komplex& operator +=( const Komplex &rhs);
        Komplex& operator -( const Komplex &rhs );
        Komplex& operator -=( const Komplex &rhs );
        Komplex& operator *( const Komplex &rhs );
        Komplex& operator *=( const Komplex &rhs );
        Komplex& operator /( const Komplex &rhs );
        Komplex& operator /=( const Komplex &rhs );
        Komplex& operator =( const Komplex &rhs );
        friend ostream &operator <<(ostream &, Komplex &);
        friend istream &operator >>(istream &, Komplex &);
    private:
        double re;
        double im;
};
//double Komplex::re;
//double Komplex::im;
Komplex& Komplex::operator +( const Komplex &rhs )
{
    double e, r;
    e = re + rhs.re;
    r = im + rhs.im;
    return *this;
}
 
/*Komplex& Komplex::operator +=( const Komplex &rhs )
{
   re += rhs.re; im += rhs.im;
   return rhs;
}*/
Komplex& Komplex::operator -( const Komplex &rhs )
{
    double q, w;
    q = re - rhs.re;
    w = im - rhs.im;
    return *this;
}
Komplex& Komplex::operator -=( const Komplex &rhs )
{
    re -= rhs.re; im -= rhs.im; return *this;
}
Komplex& Komplex::operator *( const Komplex &rhs )
{
    double i, j;
    i = re * rhs.re - im * rhs.im;
    j = re * rhs.im + rhs.re * im;
    return *this;
}
Komplex& Komplex::operator *=( const Komplex &rhs )
{
    double tmp = re*rhs.re-im*rhs.im;
    im = im*rhs.re+re*rhs.im;
    re = tmp;
    return *this;
}
Komplex& Komplex::operator /( const Komplex &rhs )
{
    double a,b,c;
    a = rhs.re * rhs.re + rhs.im * rhs.im;
    b = (re * rhs.re + im * rhs.im) / a;
    c = (rhs.re * im - re * rhs.im) / a;
 
    return *this;
}
Komplex& Komplex::operator /=( const Komplex &rhs )
{
    double denom = rhs.re*rhs.re + rhs.im*rhs.im;
    double re1 = (re*rhs.re+im*rhs.im)/denom;
    double im1 = (rhs.re*im-re*rhs.im)/denom;
    re = re1;
    im = im1;
    return *this;
}
Komplex& Komplex::operator =( const Komplex &rhs )
{
    re = rhs.re; im = rhs.im; return *this;
}
ostream &operator << (ostream &fo, Komplex &rhs)
    {
    if (rhs.im < 0) fo << rhs.re << "+i(" << rhs.im << ")\n";
    else fo << rhs.re << "+i" << rhs.im << "\n";
 
    return fo;
    }
istream &operator >>(istream &fi, Komplex &rhs)
    {
    cout << "Enter Real: ";
    fi >> rhs.re;
    cout << "Enter Image: ";
    fi >> rhs.im;
    return fi;
    }
 
int main()
{
   //clrscr();
    Komplex c1, c2, c3, c4, c5;
    cin >> c1;
    cin >> c2;
    cin >> c3;
    cin >> c4;
    cin >> c5;
 
    cout << "\nc1 = " << c1;
    cout << "c2 = " << c2;
    cout << "c3 = " << c3;
    cout << "c4 = " << c4;
    cout << "c5 = " << c5 << '\n';
 
//  cout << "Модуль c1: " << c1.abs() << "\n\n";
 
    cout << "c1 + c2 = " << (c1 + c2);
    cout << "c1 - c3 = " << (c1 - c3);
    cout << "c1 * c4 = " << (c1 * c4);
    cout << "c1 / c5 = " << (c1 / c5);
 
    //getch();
   return 0;
}
0
Programming
Эксперт
39485 / 9562 / 3019
Регистрация: 12.04.2006
Сообщений: 41,671
Блог
07.12.2013, 18:24
Ответы с готовыми решениями:

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

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

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

4
 Аватар для Extrim88
51 / 51 / 21
Регистрация: 08.02.2013
Сообщений: 189
07.12.2013, 18:32
Цитата Сообщение от 1_vlad Посмотреть сообщение
Komplex& Komplex::operator +( const Komplex &rhs )
{
* * double e, r;
* * e = re + rhs.re;
* * r = im + rhs.im;
* * return *this;
}
Начнем с перегрузки операции сложения. Она перегружена неверно. Как вариант нужно в теле функции создавать локальный объект класса, правильно инициализировать его вещественную и мнимую часть и возвращать его по значению.
0
0 / 0 / 1
Регистрация: 01.04.2013
Сообщений: 49
07.12.2013, 18:36  [ТС]
Цитата Сообщение от Extrim88 Посмотреть сообщение
Начнем с перегрузки операции сложения. Она перегружена неверно. Как вариант нужно в теле функции создавать локальный объект класса, правильно инициализировать его вещественную и мнимую часть и возвращать его по значению.
можно на примере исправить, и показать как правильно описать функцию.
0
 Аватар для Extrim88
51 / 51 / 21
Регистрация: 08.02.2013
Сообщений: 189
07.12.2013, 18:46
Или даже так, перегрузка операции сложения 2-х комплексных чисел

C++
1
2
3
4
5
6
Komplex& Komplex::operator +( const Komplex &rhs )
{
    re += rhs.re;
    im += rhs.im;
    return *this;
}
По аналогии, остальные операции
0
0 / 0 / 1
Регистрация: 01.04.2013
Сообщений: 49
07.12.2013, 19:07  [ТС]
Цитата Сообщение от Extrim88 Посмотреть сообщение
Или даже так, перегрузка операции сложения 2-х комплексных чисел
Но мне нужна и операция "+=", пробовал - да функция с "+" получилась, числа считает, но "-", "*", и "/" как и прежде не работают.
0
Надоела реклама? Зарегистрируйтесь и она исчезнет полностью.
inter-admin
Эксперт
29715 / 6470 / 2152
Регистрация: 06.03.2009
Сообщений: 28,500
Блог
07.12.2013, 19:07
Помогаю со студенческими работами здесь

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

Реализовать арифметические операции с комплексными числами
Создайте структуру, описывающую комплексное число. Реализуйте арифметические операции с комплексными числами: сумму, разность, умножение,...

Операции с комплексными числами через ООП
Друзья, написал код программы. ошибку при компиляции выдает: fatal error LNK1169: обнаружен многократно определенный символ - один или...

Класс для операций над комплексными числами (код не работает)
Создать класс для выполнения операций с комплексными числами. Предусмотреть операции: составление и вычитание; умножения и деления;...

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


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

Или воспользуйтесь поиском по форуму:
5
Ответ Создать тему
Новые блоги и статьи
Символьное дифференцирование
igorrr37 13.02.2026
/ * Логарифм записывается как: (x-2)log(x^2+2) - означает логарифм (x^2+2) по основанию (x-2). Унарный минус обозначается как ! */ #include <iostream> #include <stack> #include <cctype>. . .
Камера 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. Пошагово создадим проект для загрузки изображения. . .
SDL3 для Web (WebAssembly): Загрузка PNG с прозрачным фоном с помощью SDL3_image
8Observer8 10.02.2026
Содержание блога Библиотека SDL3_image содержит инструменты для расширенной работы с изображениями. Пошагово создадим проект для загрузки изображения формата PNG с альфа-каналом (с прозрачным. . .
Установка Qt-версии Lazarus IDE в Debian Trixie Xfce
volvo 10.02.2026
В общем, достали меня глюки IDE Лазаруса, собранной с использованием набора виджетов Gtk2 (конкретно: если набирать текст в редакторе и вызвать подсказку через Ctrl+Space, то после закрытия окошка. . .
КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin
Copyright ©2000 - 2026, CyberForum.ru