-
Notifications
You must be signed in to change notification settings - Fork 0
Expand file tree
/
Copy path24-Matrix_v2
More file actions
132 lines (105 loc) · 4.13 KB
/
Copy path24-Matrix_v2
File metadata and controls
132 lines (105 loc) · 4.13 KB
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
package lesson24;
import java.util.ArrayList;
import java.util.Random;
/* Создать класс для работы с матрицами. Предусмотреть, как минимум, функции для
* + сложения матриц,
* - умножения матриц,
* - транспонирования матриц,
* - присваивания матриц друг другу,
* + установка и получение произвольного элемента матрицы.
* Необходимо перегрузить соответствующие операторы.
*/
// В метод showMatrix добавить выравнивание столбцов (проверка: 1 или 2 символа...)
// Плохо: лишнее поле transMatrix в каждом объекте, оно нужно только в методе transMatrix ()
public class Matrix {
// матрица
int x = 6, y = 4; // размерность
int[][] matrix = new int[y][x];
int[][] transMatrix = new int[x][y]; // будущая транспонированная матрица
boolean isTransposed = false;
Random random = new Random();
// конструктор - наполняем матрицу случайными значениями
public Matrix(boolean isTransposed) {
this.isTransposed = isTransposed;
// наполняем матрицу
for (int i = 0; i < y; i++) {
for (int j = 0; j < x; j++) {
matrix[i][j] = random.nextInt(10);
}
}
if (isTransposed) { // если нужно стоздать транспонированную матрицу
// наполняем матрицу, в которой кол-во строк и столбцов меняются местами
for (int i = 0; i < x; i++) {
for (int j = 0; j < y; j++) {
transMatrix[i][j] = random.nextInt(10);
}
}
}
}
// метод установки произвольного элемента матрицы
public void setElement(int x, int y, int value) {
try {
matrix[x][y] = value;
} catch (ArrayIndexOutOfBoundsException e) {
System.out.println("Ошибка! Невозможно установить текущий элемент.\nРазмер матрицы: " + this.x + " на " + this.y);
}
}
// метод получения произвольного элемента матрицы
public int getElement(int x, int y) {
int element = -1;
try {
element = matrix[x][y];
} catch (ArrayIndexOutOfBoundsException e) {
System.out.println("Ошибка! Невозможно получить текущий элемент.\nРазмер матрицы: " + this.x + " на " + this.y);
}
return element;
}
// метод сложения матриц
public Matrix addMatrix(Matrix matrix) {
for (int i = 0; i < y; i++) {
for (int j = 0; j < x; j++) {
this.matrix[i][j] += matrix.matrix[i][j];
}
}
return this;
}
// метод транспонирования матриц
public void transposition () {
for (int i = 0; i < this.transMatrix.length; i++) {
System.out.println(transMatrix[i]);
}
}
// показ матрицы на экран
public void showMatrix() {
// если выводим транспонированную матрицу, то подменяем обычную - на транспонированную
if (isTransposed) {
matrix = transMatrix;
}
// сам вывод матрицы на экран
for (int[] line : this.matrix) {
for (int number : line) {
System.out.print(number + " ");
}
System.out.println();
}
System.out.println();
}
public static void main(String[] args) {
Matrix matrix1 = new Matrix(false);
matrix1.showMatrix();
// Matrix matrix2 = new Matrix();
// matrix2.showMatrix();
// System.out.println(matrix1.getElement(1, 0));
// System.out.println(matrix2.getElement(2, 2));
//
// matrix1.setElement(4, 2, 99);
// matrix1.showMatrix();
//
// matrix1.addMatrix(matrix2);
// matrix1.showMatrix();
Matrix matrix3 = new Matrix(true);
matrix3.showMatrix();
matrix3.transposition();
// matrix3.showMatrix();
}
}