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

c++ перегрузка функций и еще пара просьб - C++

Войти
Регистрация
Восстановить пароль
Другие темы раздела
C++ Фиксированный квант времени в алгоритме планирования FCFS http://www.cyberforum.ru/cpp-beginners/thread729909.html
Здравствуйте. Вот код программы, планировщика, который работает по алгоритму FCFS. В нем реализованы два состояния: готовность и выполнение. Как дополнить код, чтоб было состояние ОЖИДАНИЯ и...
C++ Создать класс файл с методом top50 по расширению Создать класс File. Добавить метод, который считает сколько файлов на определённом диске. Создать метод Competition. Он показывает файлов какого типа больше всего, а также их кол-во. Метод... http://www.cyberforum.ru/cpp-beginners/thread729907.html
Удалить среднею букву в нечетных словах текста C++
Нужно удалить в каждом нечетном слове среднею букву, я смог дойти только до такого: удаляет онли в первом слове, дальше уж не знаю, как составить алгоритм, нужна Ваша помощь. #include <iostream>...
C++ Преобразуйте КА к детерминированному виду и минимизируйте полученный КА
Помогите с решением задачки: Задан КА: M({S,R,Z}, {a,b}, δ, S, {Z}), δ(S,a) = {S.R}, δ(R,b) = {R}. δ(R,a) = {Z}. Преобразуйте его к детерминированному виду и минимизируйте полученный КА. ...
C++ Программа,считающая определители матриц http://www.cyberforum.ru/cpp-beginners/thread729894.html
Помогите написать программу, считающую определить матрицы методом гаусса. Заранее спасибо.
C++ Как расширить работоспособность программы Подскажите пожалуйста как сделать так чтобы программа работала при бОльших значениях...Вот у меня имеется программа для рекурсивного умножения матриц..Но она считает значения только для размера не... подробнее

Показать сообщение отдельно
MrGluck
Модератор
Эксперт CЭксперт С++
7239 / 4407 / 642
Регистрация: 29.11.2010
Сообщений: 11,927
14.12.2012, 01:21
pdesyatnyk, вот с динамическим массивом char и соотв. деструктором, конструктором копий и перегруженным оператором присваивания:
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
115
116
117
118
119
120
121
122
123
124
125
126
127
128
129
130
131
132
133
134
135
136
137
138
139
140
141
#include <iostream>
#include <cmath>
#include <cstring>
 
using namespace std;
 
class ComplexNumber
{
private:
    double x;
    double y;
    char *name;
public:
    //конструкторы
    ComplexNumber();
    ComplexNumber(char* n, double x, double y);
    ComplexNumber(const ComplexNumber &c); // конструктор копий
 
    // деструктор
    ~ComplexNumber();
 
    // оператор присваивания
    ComplexNumber& operator= (const ComplexNumber&);
 
    //вывод комплексного числа
    void showComplexNumber();
 
    //вычисление модуля комплексного числа
    double module();
 
    //перегруженные операции: сложение, вычитание, деление, умножение
    ComplexNumber operator+(ComplexNumber num);
    ComplexNumber operator-(ComplexNumber num);
    ComplexNumber operator*(ComplexNumber num);
    ComplexNumber operator/(ComplexNumber num);
};
 
void ComplexNumber::showComplexNumber()
{
    cout << name << x << showpos << y << "i" << noshowpos;
}
 
ComplexNumber::ComplexNumber()
{
    x = 0;
    y = 0;
}
 
ComplexNumber::ComplexNumber(char* n, double x, double y)
{
    name = new char[strlen(n)];
    strcpy(name, n);
    this->x = x;
    this->y = y;
}
 
ComplexNumber::ComplexNumber(const ComplexNumber &c)
{
    name = new char[strlen(c.name)];
    strcpy(name, c.name);
    x = c.x;
    y = c.y;
}
 
ComplexNumber::~ComplexNumber()
{
    delete []name;
}
 
ComplexNumber& ComplexNumber::operator= (const ComplexNumber& c)
{
    if (&c == this)
        return *this;
    delete []name;
    name = new char[strlen(c.name)];
    strcpy(name, c.name);
    x = c.x;
    y = c.y;
    return *this;
}
 
double ComplexNumber::module()
{
    return sqrt(x * x + y * y);
}
 
ComplexNumber ComplexNumber::operator+(ComplexNumber num)
{
    ComplexNumber newNum(name, x + num.x, y + num.y);
    return newNum;
}
 
ComplexNumber ComplexNumber::operator-(ComplexNumber num)
{
    ComplexNumber newNum(name, x - num.x, y - num.y);
    return newNum;
}
 
ComplexNumber ComplexNumber::operator*(ComplexNumber num)
{
    ComplexNumber newNum(name, x * num.x - y * num.y, y * num.x + x * num.y);
    return newNum;
}
 
ComplexNumber ComplexNumber::operator/(ComplexNumber num)
{
    ComplexNumber newNum(name, (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;
}
 
int main()
{
    ComplexNumber z1("super", 1, 3);
    ComplexNumber z2("puper", 2, 1);
 
    cout << "We have two complex numbers:" << '\n';
    cout << "z1=";
    z1.showComplexNumber();
    cout << "   ";
    cout << "z2=";
    z2.showComplexNumber();
    cout << '\n';
 
    cout << "Module of z1:" << z1.module() << '\n';
    cout << "Module of z2:" << z2.module() << '\n';
 
    cout << "z1 + z2 = ";
    (z1 + z2).showComplexNumber();
    cout << '\n';
    cout << "z1 - z2 = ";
    (z1 - z2).showComplexNumber();
    cout << '\n';
    cout << "z1 * z2 = ";
    (z1 * z2).showComplexNumber();
    cout << '\n';
    cout << "z1 / z2 = ";
    (z1 / z2).showComplexNumber();
    cout << '\n';
    system("pause");
    return 0;
}
Добавлено через 1 минуту
sovaz1997, а куда вы собрались вектор пихать, если не секрет?
ТС, динамический массив попросили запихнуть чтобы вы научились работать с памятью, так что vector, string вам не подходит.
1
 
КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin® Version 3.8.9
Copyright ©2000 - 2017, vBulletin Solutions, Inc.
Рейтинг@Mail.ru