С Новым годом! Форум программистов, компьютерный форум, киберфорум
С++ для начинающих
Войти
Регистрация
Восстановить пароль
Карта форума Темы раздела Блоги Сообщество Поиск Заказать работу  
 
Рейтинг 4.59/29: Рейтинг темы: голосов - 29, средняя оценка - 4.59
0 / 0 / 0
Регистрация: 24.12.2012
Сообщений: 10
1

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

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

Author24 — интернет-сервис помощи студентам
Создайте базовый класс 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
Programming
Эксперт
94731 / 64177 / 26122
Регистрация: 12.04.2006
Сообщений: 116,782
25.12.2012, 18:54
Ответы с готовыми решениями:

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

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

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

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

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

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

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 5
Проблема остается актуальной. Не могу понять как предать комплексные числа в вектор. Поделитесь, пожалуйста, советом/примером.
0
1394 / 1023 / 325
Регистрация: 28.07.2012
Сообщений: 2,813
11.05.2016, 16:16 6
igdev, вектор комплексных чисел сложно назвать комплексным числом, так что убери наследование.
Цитата Сообщение от igdev Посмотреть сообщение
vector<double> compVector; // создаем пустой вектор
double -> ComplexNumber
Остальное по аналогии.
1
79 / 67 / 28
Регистрация: 22.04.2016
Сообщений: 384
11.05.2016, 17:09 7
nonedark2008, Спасибо! Но, у меня по заданию должно быть наследование.

Создайте производный класс для реализации векторов с комплексными компонентами (вектор имеет три компонента, каждый компонент – комплексное число). Компоненты вектора являются элементами массива. Предусмотреть возможность индексирования объектов, сложения и вычитания векторов.
0
1394 / 1023 / 325
Регистрация: 28.07.2012
Сообщений: 2,813
11.05.2016, 20:31 8
Цитата Сообщение от igdev Посмотреть сообщение
Но, у меня по заданию должно быть наследование.
Наследование должно быть осмысленным, но у тебя ничего такого не видно.
Можно создать базовый интерфейс для любого числа, которое может складываться, вычитаться и выводиться (создать набор виртуальных методов).
Затем отнаследовать его в ComplexNumber и IntegratedVector и реализовать соответствующие виртуальные методы.
0
11.05.2016, 20:31
IT_Exp
Эксперт
87844 / 49110 / 22898
Регистрация: 17.06.2006
Сообщений: 92,604
11.05.2016, 20:31
Помогаю со студенческими работами здесь

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

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

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

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


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

Или воспользуйтесь поиском по форуму:
8
Ответ Создать тему
КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin
Copyright ©2000 - 2024, CyberForum.ru