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

Очень непростая программа с класами! - 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++ Перевод программы с Паскаль на С++
Помогите перевести с паскаля, нашел решение данной задачи, но не для С++. Для заданной квадратной матрицы сформировать одномерный массив из её диагональных элементов. Найти след матрицы, суммируя элементы одномерного массива. Преобразовать исходную матрицу по правилу: чётные строки разделить на полученное значение, нечётные оставить без изменения. uses crt; const n=10; var a:array of real; ...
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: Matrix(size_t rows, size_t cols) { if (rows * cols == 0)
C++ Исходник: программно выключить ПК. Есть такой у кого нибудь? подробнее

Показать сообщение отдельно
silent_1991
Эксперт C++
4938 / 3014 / 149
Регистрация: 11.11.2009
Сообщений: 7,024
Завершенные тесты: 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;
}
 
Текущее время: 18:13. Часовой пояс GMT +3.
КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin® Version 3.8.9
Copyright ©2000 - 2016, vBulletin Solutions, Inc.
Рейтинг@Mail.ru