Форум программистов, компьютерный форум CyberForum.ru

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

Восстановить пароль Регистрация
 
Санееееек
0 / 0 / 0
Регистрация: 24.12.2012
Сообщений: 10
25.12.2012, 18:54     Базовый класс Complex и производный класс Vector #1
Создайте базовый класс 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 минуту
ну очень срочно помогите пожалуйста хоть материальчик по векторам с комплексными компонентами подкиньте
После регистрации реклама в сообщениях будет скрыта и будут доступны все возможности форума.
David Sylva
 Аватар для David Sylva
1280 / 942 / 51
Регистрация: 17.05.2012
Сообщений: 2,686
25.12.2012, 18:56     Базовый класс Complex и производный класс Vector #2
тема много раз обсуждалась посмотри здесь Реализовать класс Complex для работы с комплексными числами
Санееееек
0 / 0 / 0
Регистрация: 24.12.2012
Сообщений: 10
25.12.2012, 19:18  [ТС]     Базовый класс Complex и производный класс Vector #3
спасибо)
igdev
8 / 8 / 2
Регистрация: 22.04.2016
Сообщений: 74
Завершенные тесты: 1
09.05.2016, 00:06     Базовый класс Complex и производный класс Vector #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;
}
igdev
8 / 8 / 2
Регистрация: 22.04.2016
Сообщений: 74
Завершенные тесты: 1
11.05.2016, 16:10     Базовый класс Complex и производный класс Vector #5
Проблема остается актуальной. Не могу понять как предать комплексные числа в вектор. Поделитесь, пожалуйста, советом/примером.
nonedark2008
623 / 501 / 92
Регистрация: 28.07.2012
Сообщений: 1,338
11.05.2016, 16:16     Базовый класс Complex и производный класс Vector #6
igdev, вектор комплексных чисел сложно назвать комплексным числом, так что убери наследование.
Цитата Сообщение от igdev Посмотреть сообщение
vector<double> compVector; // создаем пустой вектор
double -> ComplexNumber
Остальное по аналогии.
igdev
8 / 8 / 2
Регистрация: 22.04.2016
Сообщений: 74
Завершенные тесты: 1
11.05.2016, 17:09     Базовый класс Complex и производный класс Vector #7
nonedark2008, Спасибо! Но, у меня по заданию должно быть наследование.

Создайте производный класс для реализации векторов с комплексными компонентами (вектор имеет три компонента, каждый компонент – комплексное число). Компоненты вектора являются элементами массива. Предусмотреть возможность индексирования объектов, сложения и вычитания векторов.
MoreAnswers
Эксперт
37091 / 29110 / 5898
Регистрация: 17.06.2006
Сообщений: 43,301
11.05.2016, 20:31     Базовый класс Complex и производный класс Vector
Еще ссылки по теме:

Наследование: базовый класс Квадрат, производный класс Пирамида C++
C++ Базовый класс Liquid и производный класс Alcohol
C++ Создать базовый и производный класс

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

Или воспользуйтесь поиском по форуму:
nonedark2008
623 / 501 / 92
Регистрация: 28.07.2012
Сообщений: 1,338
11.05.2016, 20:31     Базовый класс Complex и производный класс Vector #8
Цитата Сообщение от igdev Посмотреть сообщение
Но, у меня по заданию должно быть наследование.
Наследование должно быть осмысленным, но у тебя ничего такого не видно.
Можно создать базовый интерфейс для любого числа, которое может складываться, вычитаться и выводиться (создать набор виртуальных методов).
Затем отнаследовать его в ComplexNumber и IntegratedVector и реализовать соответствующие виртуальные методы.
Yandex
Объявления
11.05.2016, 20:31     Базовый класс Complex и производный класс Vector
Ответ Создать тему
Опции темы

Текущее время: 06:13. Часовой пояс GMT +3.
КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin® Version 3.8.9
Copyright ©2000 - 2016, vBulletin Solutions, Inc.
Рейтинг@Mail.ru