Модуль 1. Вариант 4
This commit is contained in:
parent
7e38b7adae
commit
aa490a1387
@ -53,7 +53,7 @@ javadoc.splitindex=true
|
||||
javadoc.use=true
|
||||
javadoc.version=false
|
||||
javadoc.windowtitle=
|
||||
main.class=tse.Main
|
||||
main.class=module1.variant4.Task_2
|
||||
manifest.file=manifest.mf
|
||||
meta.inf.dir=${src.dir}/META-INF
|
||||
mkdist.disabled=false
|
||||
|
98
src/module1/variant4/Matrix.java
Normal file
98
src/module1/variant4/Matrix.java
Normal file
@ -0,0 +1,98 @@
|
||||
package module1.variant4;
|
||||
|
||||
/**
|
||||
*
|
||||
* @author aNNiMON
|
||||
*/
|
||||
public class Matrix {
|
||||
|
||||
protected int[][] matrix;
|
||||
|
||||
public Matrix(int row, int columns) {
|
||||
if ( (row < 1) || (columns < 1) ) {
|
||||
throw new RuntimeException("Размер матрицы должен быть больше 0");
|
||||
}
|
||||
matrix = new int[row][columns];
|
||||
}
|
||||
|
||||
public Matrix(int[][] matrix) {
|
||||
this.matrix = matrix;
|
||||
}
|
||||
|
||||
public int getRowSize() {
|
||||
return matrix.length;
|
||||
}
|
||||
|
||||
public int getColumnSize() {
|
||||
return matrix[0].length;
|
||||
}
|
||||
|
||||
public int[][] getMatrix() {
|
||||
return matrix;
|
||||
}
|
||||
|
||||
public void setMatrix(int[][] matrix) {
|
||||
this.matrix = matrix;
|
||||
}
|
||||
|
||||
public void setRow(int row, int[] vector) {
|
||||
this.matrix[row] = vector;
|
||||
}
|
||||
|
||||
public void setCell(int row, int column, int value) {
|
||||
this.matrix[row][column] = value;
|
||||
}
|
||||
|
||||
public Matrix multiply(Matrix other) {
|
||||
int[][] matrixA = matrix;
|
||||
int[][] matrixB = other.matrix;
|
||||
|
||||
int rowsA = matrixA.length;
|
||||
int columnsA = matrixA[0].length;
|
||||
int columnsB = matrixB.length;
|
||||
if (columnsB != columnsA) {
|
||||
throw new RuntimeException("Размеры матриц не совпадают");
|
||||
}
|
||||
|
||||
int[][] matrixC = new int[rowsA][columnsB];
|
||||
for (int i = 0; i < rowsA; i++) {
|
||||
for (int j = 0; j < columnsB; j++) {
|
||||
for (int k = 0; k < columnsA; k++) {
|
||||
matrixC[i][j] += matrixA[i][k] * matrixB[k][j];
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
return new Matrix(matrixC);
|
||||
}
|
||||
|
||||
@Override
|
||||
public String toString() {
|
||||
StringBuilder sb = new StringBuilder();
|
||||
sb.append("Матрица\n");
|
||||
for (int i = 0; i < matrix.length; i++) {
|
||||
for (int j = 0; j < matrix[0].length; j++) {
|
||||
sb.append(matrix[i][j]).append(' ');
|
||||
}
|
||||
sb.append("\n");
|
||||
}
|
||||
return sb.toString();
|
||||
}
|
||||
|
||||
@Override
|
||||
protected Object clone() throws CloneNotSupportedException {
|
||||
return super.clone();
|
||||
}
|
||||
|
||||
@Override
|
||||
public boolean equals(Object obj) {
|
||||
return super.equals(obj);
|
||||
}
|
||||
|
||||
@Override
|
||||
public int hashCode() {
|
||||
return super.hashCode();
|
||||
}
|
||||
|
||||
|
||||
}
|
47
src/module1/variant4/Task_2.java
Normal file
47
src/module1/variant4/Task_2.java
Normal file
@ -0,0 +1,47 @@
|
||||
package module1.variant4;
|
||||
|
||||
import java.util.ArrayList;
|
||||
import java.util.Random;
|
||||
|
||||
/**
|
||||
*
|
||||
* @author aNNiMON
|
||||
*/
|
||||
public class Task_2 {
|
||||
|
||||
public static void main(String[] args) {
|
||||
Random rnd = new Random();
|
||||
|
||||
Matrix mt1 = new Matrix(1, 3);
|
||||
for (int i = 0; i < mt1.getColumnSize(); i++) {
|
||||
mt1.setCell(0, i, rnd.nextInt(10));
|
||||
}
|
||||
|
||||
Matrix mt2 = new Matrix(3, 3);
|
||||
for (int i = 0; i < mt2.getRowSize(); i++) {
|
||||
for (int j = 0; j < mt2.getColumnSize(); j++) {
|
||||
mt2.setCell(i, j, rnd.nextInt(10));
|
||||
}
|
||||
}
|
||||
|
||||
Vector vector = new Vector(3);
|
||||
for (int i = 0; i < vector.getVectorSize(); i++) {
|
||||
vector.setCell(i, rnd.nextInt(10));
|
||||
}
|
||||
|
||||
|
||||
ArrayList<Matrix> list = new ArrayList<>();
|
||||
list.add(mt1);
|
||||
list.add(mt2);
|
||||
list.add(vector);
|
||||
|
||||
for (Matrix matrix : list) {
|
||||
System.out.println(matrix.toString());
|
||||
}
|
||||
System.out.println("AxB= " + mt1.multiply(mt2).toString());
|
||||
System.out.println("V*A= " + vector.getMultiplyMatrixAndVector(mt1).toString());
|
||||
System.out.println("V*B= " + vector.getMultiplyMatrixAndVector(mt2).toString());
|
||||
System.out.println("V*V= " + vector.getVectorScalarMultiply(vector));
|
||||
}
|
||||
|
||||
}
|
73
src/module1/variant4/Vector.java
Normal file
73
src/module1/variant4/Vector.java
Normal file
@ -0,0 +1,73 @@
|
||||
package module1.variant4;
|
||||
|
||||
/**
|
||||
*
|
||||
* @author aNNiMON
|
||||
*/
|
||||
public class Vector extends Matrix {
|
||||
|
||||
public Vector(int size) {
|
||||
super(new int[1][size]);
|
||||
}
|
||||
|
||||
public Vector(int[] vector) {
|
||||
super(new int[][] {
|
||||
vector
|
||||
});
|
||||
}
|
||||
|
||||
public int[] getVector() {
|
||||
return matrix[0];
|
||||
}
|
||||
|
||||
public int getVectorSize() {
|
||||
return matrix[0].length;
|
||||
}
|
||||
|
||||
public void setCell(int column, int value) {
|
||||
super.setCell(0, column, value);
|
||||
}
|
||||
|
||||
public Vector getMultiplyMatrixAndVector(Matrix matrix) {
|
||||
int[][] matrixA = matrix.getMatrix();
|
||||
int rowsA = matrixA.length;
|
||||
int columnsA = matrixA[0].length;
|
||||
|
||||
int[] vector = getVector();
|
||||
|
||||
if (vector.length != columnsA) {
|
||||
throw new RuntimeException("Размер матрицы и длина вектора не совпадают");
|
||||
}
|
||||
int[] result = new int[rowsA];
|
||||
for (int i = 0; i < rowsA; i++) {
|
||||
for (int j = 0; j < columnsA; j++) {
|
||||
result[i] += (matrixA[i][j] * vector[j]);
|
||||
}
|
||||
}
|
||||
return new Vector(result);
|
||||
}
|
||||
|
||||
public int getVectorScalarMultiply(Vector other) {
|
||||
int[] vectorA = getVector();
|
||||
int[] vectorB = other.getVector();
|
||||
|
||||
int result = 0;
|
||||
for (int i = 0; i < vectorA.length; i++) {
|
||||
result += vectorA[i] * vectorB[i];
|
||||
}
|
||||
|
||||
return result;
|
||||
}
|
||||
|
||||
@Override
|
||||
public String toString() {
|
||||
StringBuilder sb = new StringBuilder();
|
||||
sb.append("Вектор\n");
|
||||
for (int j = 0; j < matrix[0].length; j++) {
|
||||
sb.append(matrix[0][j]).append(' ');
|
||||
}
|
||||
sb.append("\n");
|
||||
return sb.toString();
|
||||
}
|
||||
|
||||
}
|
Loading…
Reference in New Issue
Block a user