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

Очень непростая программа с класами! - C++

Войти
Регистрация
Восстановить пароль
Другие темы раздела
C++ перевод десятичного числа в римскую систему счисления http://www.cyberforum.ru/cpp-beginners/thread296924.html
помогите пожалуйста написать такую программу...очень нужно
C++ Уточняющий вопрос: почему при перегрузке оператора [] необходимо возвращать ссылку? Сабж. Ну, то есть есть класс, что-то такое: #include <iostream> using namespace std; class arr { public: explicit arr(int number) { array= new int ; http://www.cyberforum.ru/cpp-beginners/thread296923.html
C++ Перевод программы с Паскаль на С++
Помогите перевести с паскаля, нашел решение данной задачи, но не для С++. Для заданной квадратной матрицы сформировать одномерный массив из её диагональных элементов. Найти след матрицы, суммируя...
C++ решите 2 задачи
Помогите пожалуйста решить номера задач (2 и 3) в 8 варианте! в проге Dev C++ файл приложил в виде фото...
C++ Перегрузка оператора ^ http://www.cyberforum.ru/cpp-beginners/thread296914.html
Здравствуйте! Необходимо перегрузить бинарный оператор ^ для транспонирования матрицы. Есть класс матрицы: template <class T> class Matrix { T** values; size_t rows; size_t cols; public:...
C++ Исходник: программно выключить ПК. Есть такой у кого нибудь? подробнее

Показать сообщение отдельно
silent_1991
Эксперт С++
4989 / 3046 / 149
Регистрация: 11.11.2009
Сообщений: 7,028
Завершенные тесты: 1
16.05.2011, 18:35
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
#include <iostream>
 
class Matrix
{
public:
    Matrix(size_t size = 2):
    m_matrix(new double *[size]),
    m_size(size)
    {
        for (size_t i = 0; i < m_size; ++i)
        {
            m_matrix[i] = new double [m_size];
 
            for (size_t j = 0; j < m_size; ++j)
                m_matrix[i][j] = 0;
        }
    }
 
    Matrix(const Matrix &source):
    m_matrix(new double *[source.m_size]),
    m_size(source.m_size)
    {
        for (size_t i = 0; i < m_size; ++i)
        {
            m_matrix[i] = new double [m_size];
 
            for (size_t j = 0; j < m_size; ++j)
                m_matrix[i][j] = source.m_matrix[i][j];
        }
    }
 
    ~Matrix()
    {
        for (size_t i = 0; i < m_size; ++i)
            delete [] m_matrix[i];
 
        delete [] m_matrix;
    }
 
    void input()
    {
        for (size_t i = 0; i < m_size; ++i)
        {
            for (size_t j = 0; j < m_size; ++j)
            {
                std::cout << "matrix[" << i << "][" << j << "] = ";
                std::cin >> m_matrix[i][j];
            }
        }
    }
 
    void print() const
    {
        for (size_t i = 0; i < m_size; ++i)
        {
            for (size_t j = 0; j < m_size; ++j)
                std::cout << m_matrix[i][j] << "  ";
 
            std::cout << std::endl;
        }
    }
 
    Matrix &operator-=(const Matrix &right)
    {
        if (m_size == right.m_size)
            for (size_t i = 0; i < m_size; ++i)
                for (size_t j = 0; j < m_size; ++j)
                    m_matrix[i][j] -= right.m_matrix[i][j];
 
        return *this;
    }
 
    Matrix &operator*=(const Matrix &right)
    {
        Matrix result(m_size);
 
        if (m_size == right.m_size)
        {
            for (size_t i = 0; i < m_size; ++i)
                for (size_t j = 0; j < m_size; ++j)
                    for (size_t k = 0; k < m_size; ++k)
                        result.m_matrix[i][j] += m_matrix[i][k] * right.m_matrix[k][j];
 
            *this = result;
        }
 
        return *this;
    }
 
    Matrix &operator=(const Matrix &source)
    {
        if (this != &source)
        {
            if (m_size != source.m_size)
            {
                for (size_t i = 0; i < m_size; ++i)
                    delete [] m_matrix[i];
 
                delete [] m_matrix;
 
                m_size = source.m_size;
 
                m_matrix = new double *[m_size];
 
                for (size_t i = 0; i < m_size; ++i)
                    m_matrix[i] = new double [m_size];
            }
 
            for (size_t i = 0; i < m_size; ++i)
                for (size_t j = 0; j < m_size; ++j)
                    m_matrix[i][j] = source.m_matrix[i][j];
        }
 
        return *this;
    }
 
private:
    double **m_matrix;
    size_t m_size;
};
 
int main()
{
    Matrix m1(2), m2(2);
    
    m1.input();
    m2.input();
 
    Matrix m3 = m1, m4 = m1;
 
    m3 -= m2;
    m4 *= m2;
 
    m3.print();
    m4.print();
 
    return 0;
}
1
 
КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin® Version 3.8.9
Copyright ©2000 - 2017, vBulletin Solutions, Inc.