Skip to content

Commit 2bf94ad

Browse files
committed
Merge branch 'lab-12-var-12'
2 parents 9275cd1 + ed5a66c commit 2bf94ad

File tree

3 files changed

+595
-1
lines changed

3 files changed

+595
-1
lines changed

Variants/Lab_12/var_12/main.cpp

Lines changed: 219 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -1,4 +1,222 @@
11
// Создайте класс SqrMatrix
22
// (квадратная матрица с элементами типа double)
33
// с операциями + - * /, умножения на скаляр
4-
// Размерность матрицы задать в конструкторе
4+
// Размерность матрицы задать в конструкторе
5+
6+
// TODO:
7+
// Используйте приватные поля для данных
8+
// Реализуйте конструктор, который должен устанавливать значения по умолчанию,
9+
// Реализуйте методы для чтения и записи значений полей (set, get), а также ввода и вывода (перегрузка operator<< и operator>> не требуется)
10+
// Если требуется, напишите конструктор копий, оператор присваивания и деструктор
11+
// Напишите программу для тестирования вашего класса
12+
13+
#include "matrix.h"
14+
15+
int main() {
16+
Matrix m1;
17+
m1.print();
18+
19+
Matrix m2(10);
20+
m2.print();
21+
22+
Matrix m3(
23+
{
24+
{1, 2, 3, 4},
25+
{1, 2, 3, 4},
26+
{1, 2, 3, 4},
27+
{1, 2, 3, 4},
28+
}
29+
);
30+
m3.print();
31+
32+
Matrix m4(m3);
33+
m4.print();
34+
35+
Matrix m5(
36+
{
37+
{1, 2},
38+
{3, 4}
39+
}
40+
);
41+
m5.print();
42+
43+
m5 = m3;
44+
m5.print();
45+
46+
/*
47+
// Error in class constructor: Matrix is not square
48+
Matrix m6(
49+
{
50+
{1, 1, 0, 0, 1},
51+
{1, 1, 0, 0, 1},
52+
{1, 1, 0, 0, 1},
53+
}
54+
);
55+
m6.print();
56+
*/
57+
58+
Matrix m7(5, 0.01);
59+
for (int i = 0; i < m7.size(); i++)
60+
m7.set(i, i, 9.99);
61+
62+
m7.set(4, 2, 3.14);
63+
m7.print();
64+
65+
/*
66+
// Error in 'set' operator: Invalid index
67+
m7.set(m7.size(), m7.size() + 1, 0);
68+
m7.print();
69+
*/
70+
71+
m7.set(
72+
{
73+
{1, 2, 3, 4, 5},
74+
{1, 2, 3, 4, 5},
75+
{1, 2, 3, 4, 5},
76+
{1, 2, 3, 4, 5},
77+
{1, 2, 3, 4, 5}
78+
}
79+
);
80+
m7.print();
81+
82+
/*
83+
// Error in 'set' operator: Target matrix has different size
84+
m7.set(
85+
{
86+
{1, 2},
87+
{3, 4}
88+
}
89+
);
90+
m7.print();
91+
*/
92+
93+
m7.set(0, 0, 0)
94+
.set(0, m7.size()-1, 0)
95+
.set(m7.size()-1, 0, 0)
96+
.set(m7.size()-1, m7.size()-1, 0);
97+
m7.print();
98+
99+
Matrix m8(3, 0.1);
100+
m8.print();
101+
102+
m8.set(
103+
{
104+
{9, 8, 7},
105+
{6, 5, 4},
106+
{3, 2, 1}
107+
}
108+
).set(2, 2, 0);
109+
m8.print();
110+
111+
Matrix m9(3);
112+
m9.set(m8).set(2, 2, 1);
113+
m9.print();
114+
115+
Matrix m10(10);
116+
m10.set(0, 0, 2).set(9, 9, 9);
117+
m10.print();
118+
119+
cout << m10.get(0, 0) << " at 0, 0" << endl
120+
<< m10.get(9, 9) << " at 9, 9" << endl
121+
<< m10.get(5, 5) << " at 5, 5" << endl << endl;
122+
123+
/*
124+
// Error in 'get' operator: Invalid index
125+
cout << m10.get(10, 10) << " at 10, 10" << endl;
126+
*/
127+
128+
m10.transpose().print();
129+
m9.transpose().print();
130+
131+
Matrix test(
132+
{
133+
{1, 2, 3},
134+
{4, 5, 6},
135+
{7, 8, 9}
136+
}
137+
);
138+
139+
test.print();
140+
test.transpose().print();
141+
142+
// operators test
143+
144+
Matrix summ = Matrix(5, 1) + Matrix(5, 2);
145+
summ.print();
146+
summ -= Matrix(5, 4);
147+
summ.print();
148+
149+
// проверка умножения
150+
151+
Matrix mult1({
152+
{1, 2, 3},
153+
{4, 5, 6},
154+
{7, 8, 9},
155+
});
156+
157+
Matrix mult2({
158+
{6, 1, 8},
159+
{0, 4, 2},
160+
{6, 1, 8},
161+
});
162+
163+
mult1.print();
164+
cout << " *\n" << endl;
165+
mult2.print();
166+
167+
cout << " =\n" << endl;
168+
mult1 *= mult2;
169+
mult1.print();
170+
171+
Matrix mult3(6, 6);
172+
mult3.print();
173+
cout << "* 6 =\n" << endl;
174+
175+
mult3 *= 6;
176+
mult3.print();
177+
178+
Matrix det_test({
179+
{2, 4, 3},
180+
{5, 7, 8},
181+
{6, 9, 1},
182+
});
183+
184+
cout << det_test.determinant() << endl << endl;
185+
186+
det_test.minor_matrix().print();
187+
det_test.algebraic_additions().print();
188+
189+
Matrix aaa({
190+
{1, 2},
191+
{3, 4}
192+
});
193+
aaa.print();
194+
195+
aaa.inverse().print();
196+
197+
Matrix a100({
198+
{1, 18, 4, 6, 9 },
199+
{11, 17, 13, 14, 8 },
200+
{25, 2, 19, 15, 21},
201+
{10, 5, 12, 3, 7 },
202+
{24, 20, 22, 16, 23}
203+
});
204+
a100.print();
205+
206+
cout << a100.determinant() << endl << endl;
207+
a100.inverse().print();
208+
209+
Matrix mult_a({
210+
{13, 26},
211+
{39, 13}
212+
});
213+
214+
Matrix mult_b({
215+
{7, 4},
216+
{2, 3}
217+
});
218+
219+
// для проверки
220+
// https://ru.wikihow.com/делить-матрицы
221+
(mult_a / mult_b).print();
222+
}

0 commit comments

Comments
 (0)