0 / 0 / 0
Регистрация: 24.12.2012
Сообщений: 10

Базовый класс Complex и производный класс Vector

25.12.2012, 18:54. Показов 5858. Ответов 7
Метки нет (Все метки)

Студворк — интернет-сервис помощи студентам
Создайте базовый класс Complex (комплексное число) для реализации комплексных чисел в алгебраической форме и основных операций с ними: сложения, вычитания, умножения и деления. Создайте производный класс для реализации векторов с комплексными компонентами (вектор имеет три компонента, каждый компонент – комплексное число). Компоненты вектора являются элементами массива. Предусмотреть возможность индексирования объектов, сложения и вычитания векторов.
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
#include "stdafx.h"
#include <iostream>
#include <cmath>
 
using namespace std;
 
class Complex
{
public:
    double x;
    double y;
    //конструкторы
    Complex();
    Complex(double x, double y);
    //вывод комплексного числа
    void showComplex();
 
    //перегруженные операции: сложение, вычитание, деление, умножение
    Complex operator+(Complex num);
    Complex operator-(Complex num);
    Complex operator*(Complex num);
    Complex operator/(Complex num);
    
};
 void Complex::showComplex()
{
    cout << x << showpos << y << "i" << noshowpos;
}
 
Complex::Complex()
{
    x = 0;
    y = 0;
}
 
Complex::Complex(double x, double y)
{
    this->x = x;
    this->y = y;
}
 
Complex Complex::operator+(Complex num)
{
    Complex newNum(x + num.x, y + num.y);
    return newNum;
}
 
Complex Complex::operator-(Complex num)
{
    Complex newNum(x - num.x, y - num.y);
    return newNum;
}
 
Complex Complex::operator*(Complex num)
{
    Complex newNum(x * num.x - y * num.y, y * num.x + x * num.y);
    return newNum;
}
 
Complex Complex::operator/(Complex num)
{
    Complex newNum((x * num.x + y * num.y) / (num.x * num.x + num.y * num.y), (y * num.x - x * num.y) / (num.x * num.x + num.y * num.y));
    return newNum;
}
вот вторая часть задания не особо получается

Добавлено через 3 часа 21 минуту
ну очень срочно помогите пожалуйста хоть материальчик по векторам с комплексными компонентами подкиньте
0
cpp_developer
Эксперт
20123 / 5690 / 1417
Регистрация: 09.04.2010
Сообщений: 22,546
Блог
25.12.2012, 18:54
Ответы с готовыми решениями:

Базовый класс Complex и производный класс для реализации квадратных матриц
1) Создайте базовый класс Complex (комплексное число) для реализации комплексных чисел в алгебраической форме и основных операций с ними:...

Реализовать класс Pair (пара чисел); определить производный класс Complex (комплексное число)
Здравствуйте. Задали задание: Создать класс Pair (пара чисел); определить метод перемножения полей и операцию сложения пар: (а, b) +...

Создать базовый класс - Array и производный класс - Money для работы денежной суммы
ПОМОГИТЕ, ПОЖАЛУЙСТА, С ЗАДАЧЕЙ Создать базовый класс - Array и производный класс - Money для работы денежной суммы

7
 Аватар для David Sylva
1321 / 983 / 267
Регистрация: 17.05.2012
Сообщений: 2,687
25.12.2012, 18:56
тема много раз обсуждалась посмотри здесь Реализовать класс Complex для работы с комплексными числами
0
0 / 0 / 0
Регистрация: 24.12.2012
Сообщений: 10
25.12.2012, 19:18  [ТС]
спасибо)
0
79 / 67 / 28
Регистрация: 22.04.2016
Сообщений: 384
09.05.2016, 00:06
Мне дано аналогичное задание, только с меньшим набором операций, т.е. нужно реализовать только суммирование и вычитание комплексных чисел. Данную задачу я выполнил (реализовал).
Аналогично, как и автор темы, не могу понять как передать комплексные числа в производный класс и записать/добавить их в вектор. Пересмотрел на форуме множество тем, но так и не смог найти ответ на свой вопрос.
Подскажите, пожалуйста, как решить данную задачу (передать комплексные числа в производный класс и записать/добавить их в вектор)? Или подскажите алгоритмом.

Свой код прилагаю:

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
#include <iostream>
#include <vector>
#include <iterator>
#include <cmath>
#include <clocale>
 
 
 
using namespace std;
 
class ComplexNumber
{
 
public:
    double real; // Действительнаня часть
    double image; // Мнимая часть
 
    ComplexNumber(double re = 0, double im = 0) // Конструктор
    {real = re, image = im;}
 
    ComplexNumber operator+(const ComplexNumber &); // Сложение комплексных чисел
    ComplexNumber operator-(const ComplexNumber &); // Вычитание комплексных чисел
 
    friend ostream &operator<<(ostream &, const ComplexNumber &); // Вывод комплексных чисел
    friend istream &operator>>(istream &, ComplexNumber &); // Ввод комплексных чисел
};
 
// Сложение комплексных чисел /Перегрузка +/
ComplexNumber ComplexNumber::operator+(const ComplexNumber &CN)
{
    ComplexNumber t(*this);
    t.real += CN.real;
    t.image += CN.image;
    return t;
}
 
// Вычитание комплексных чисел /Перегрузка -/
ComplexNumber ComplexNumber::operator-(const ComplexNumber &CN)
{
    ComplexNumber t(*this);
    t.real -= CN.real;
    t.image -= CN.image;
    return t;
}
 
// Вывод комплексных чисел /Перегрузка <</
ostream &operator<< (ostream &fo, const ComplexNumber &fp )
{
    if (fp.image < 0) fo << fp.real << "+i(" << fp.image << ")\n";
    else fo << fp.real << "+i" << fp.image << "\n";
    return fo;
}
 
// Ввод комплексных чисел /Перегрузка >>/
istream &operator>>(istream &fi, ComplexNumber &fp)
{
    fi >> fp.real;
    fi >> fp.image;
 
    return fi;
}
 
 
 
 
class IntegratedVector : public ComplexNumber
{
public:
 
    IntegratedVector(double re, double im) : ComplexNumber(re, im)
    {};
    vector<double> compVector; // создаем пустой вектор
 
    void addToVector(double re, double im); // Добавление элементов в вектор
    void showVector(double re, double im); // Вывод элементов вектора на экран
};
 
// Добавление элементов в вектор
void IntegratedVector::addToVector(double re, double im)
    {
        compVector.insert(compVector.end(), re);
        compVector.insert(compVector.end(), im);
    }
 
// Вывод элементов вектора на экран
void showVector(double re, double im)
{
    copy(compVector.begin(),
         compVector.end(),
         ostream_iterator<double>(cout," ")
         );
}
 
int main()
{
    setlocale(0,"");
 
    ComplexNumber num1, num2, num3;
    cout << "1 число, введите действительную и мнимую части через пробел: ";
    cin >> num1;
    cout << "2 число, введите действительную и мнимую части через пробел: ";
    cin >> num2;
    cout << "3 число, введите действительную и мнимую части через пробел: ";
    cin >> num3;
 
    cout << "\nnum1 = " << num1;
    cout << "num2 = " << num2;
    cout << "num3 = " << num3 << '\n';
 
    cout << "num1 + num2 + num3 = " << num1 + num2 + num3;
    cout << "num1 - num2 - num3 = " << num1 - num2 - num3;
 
    return 0;
}
0
79 / 67 / 28
Регистрация: 22.04.2016
Сообщений: 384
11.05.2016, 16:10
Проблема остается актуальной. Не могу понять как предать комплексные числа в вектор. Поделитесь, пожалуйста, советом/примером.
0
1394 / 1023 / 325
Регистрация: 28.07.2012
Сообщений: 2,813
11.05.2016, 16:16
igdev, вектор комплексных чисел сложно назвать комплексным числом, так что убери наследование.
Цитата Сообщение от igdev Посмотреть сообщение
vector<double> compVector; // создаем пустой вектор
double -> ComplexNumber
Остальное по аналогии.
1
79 / 67 / 28
Регистрация: 22.04.2016
Сообщений: 384
11.05.2016, 17:09
nonedark2008, Спасибо! Но, у меня по заданию должно быть наследование.

Создайте производный класс для реализации векторов с комплексными компонентами (вектор имеет три компонента, каждый компонент – комплексное число). Компоненты вектора являются элементами массива. Предусмотреть возможность индексирования объектов, сложения и вычитания векторов.
0
1394 / 1023 / 325
Регистрация: 28.07.2012
Сообщений: 2,813
11.05.2016, 20:31
Цитата Сообщение от igdev Посмотреть сообщение
Но, у меня по заданию должно быть наследование.
Наследование должно быть осмысленным, но у тебя ничего такого не видно.
Можно создать базовый интерфейс для любого числа, которое может складываться, вычитаться и выводиться (создать набор виртуальных методов).
Затем отнаследовать его в ComplexNumber и IntegratedVector и реализовать соответствующие виртуальные методы.
0
Надоела реклама? Зарегистрируйтесь и она исчезнет полностью.
raxper
Эксперт
30234 / 6612 / 1498
Регистрация: 28.12.2010
Сообщений: 21,154
Блог
11.05.2016, 20:31
Помогаю со студенческими работами здесь

Создать базовый класс Car (машина) и производный класс Lorry (грузовик): ООП ошибки
Создать базовый класс Car (машина), характеризуемый торговой маркой (строка), числом цилиндров, мощностью. Определить методы переназначения...

Указатели в базовом классе на базовый класс и производный класс
Пишу контейнер &quot;Бинарное дерево поиска&quot; для частотного словаря. С самим контейнером особо вопросов нету. Вопрос по поводу элементов в...

Создать базовый класс Polygon и производный класс Triangle
Создать базовый класс Polygon (многоугольник). Класс должен содержать методы для рисования многоугольника, вычисления периметра, нахождения...

Создать базовый класс Triad и производный класс vector3D
Помогите пожалуйста с заданием. Часть кода(vector3D) сделал, вроде работает Нужно помочь с классом Triad. Вот полное задание: ...

Наследование: базовый класс Квадрат, производный класс Пирамида
Помогите, пожалуйста!:cry: Добавлено через 6 минут Создать класс КВАДРАТ, член класса- длинна стороны. Предусмотреть в классе методы...


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

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

Новые блоги и статьи
Оптимизация производительности Express.js бэкенда
Reangularity 23.05.2025
Express. js заслуженно остаётся одним из самых популярных инструментов для создания бэкенда, но даже он не застрахован от проблем с производительностью. Многие разработчики сталкиваются с ситуацией,. . .
Продвинутая обработка данных с LINQ в C#
stackOverflow 23.05.2025
LINQ (Language Integrated Query) — это фундаментальное изменение парадигмы работы с данными в C#. Простые запросы Where и Select знакомы любому разработчику, но настоящая мощь LINQ раскрывается в. . .
Инфраструктура PKI и сертификатов безопасности
Mr. Docker 23.05.2025
PKI (Public Key Infrastructure) — это невидимый фундамент цифрового доверия, без которого современный интернет просто рассыпался бы как карточный домик. За этой аббревиатурой скрывается целый. . .
Аутентификация OAuth в Python
py-thonny 22.05.2025
OAuth (Open Authorization) — это целый стандарт для делегированного доступа. Звучит занудно? Давайте проще: OAuth позволяет приложениям получать доступ к информации пользователя на сторонних сервисах. . .
Хеширование и соль паролей в веб-приложениях C#
stackOverflow 22.05.2025
Когда-то в начале своей карьеры я тоже грешил простейшими подходами к хранению паролей – MD5-хеширование казалось верхом защиты. Но технологии не стоят на месте, вычислительные мощьности растут, и. . .
Генераторы Python для эффективной обработки данных
AI_Generated 21.05.2025
В Python существует инструмент настолько мощный и в то же время недооценённый, что я часто сравниваю его с тайным оружием в арсенале программиста. Речь идёт о генераторах — одной из самых элегантных. . .
Чем заменить Swagger в .NET WebAPI
stackOverflow 21.05.2025
Если вы создавали Web API на . NET в последние несколько лет, то наверняка сталкивались с зелёным интерфейсом Swagger UI. Этот инструмент стал практически стандартом для документирования и. . .
Использование Linq2Db в проектах C# .NET
UnmanagedCoder 21.05.2025
Среди множества претендентов на корону "идеального ORM" особое место занимает Linq2Db — микро-ORM, балансирующий между мощью полноценных инструментов и легковесностью ручного написания SQL. Что. . .
Реализация Domain-Driven Design с Java
Javaican 20.05.2025
DDD — это настоящий спасательный круг для проектов со сложной бизнес-логикой. Подход, предложенный Эриком Эвансом, позволяет создавать элегантные решения, которые точно отражают реальную предметную. . .
Возможности и нововведения C# 14
stackOverflow 20.05.2025
Выход версии C# 14, который ожидается вместе с . NET 10, приносит ряд интересных нововведений, действительно упрощающих жизнь разработчиков. Вы уже хотите опробовать эти новшества? Не проблема! Просто. . .
КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin
Copyright ©2000 - 2025, CyberForum.ru