Скачиваний:
1
Добавлен:
27.01.2024
Размер:
126.81 Кб
Скачать

Лабораторная работа №1

В приведенных ниже заданиях необходимо вывести внизу фамилию разработчика, дату получения задания, а также дату сдачи задания. Для работы с динамическим массивом вводить его с клавиатуры и необходимо использовать утилитный класс Arrays и его стандартные методы. В заданиях на числа объект можно создавать в виде массива символов. Ввести n чисел с консоли (1-15 вариант добавлять новый элемент в начало списка, 16-30 – в конец списка).

24. Вычислить определитель матрицы.

Содержание Main.java:

public class Main {

public static void main(String[] args) {

int size = Utility.readInteger("Enter size of array: ");

int[] array = Utility.readArray(size);

Utility.printArray(array);

int n = Utility.readInteger("Enter size of square matrix: ");

int[][] matrix = new int[n][n];

for (int i = 0; i < n; i++) {

for (int j = 0; j < n; j++) {

matrix[i][j] = Utility.readInteger("Enter element (" + (i + 1) + "," + (j + 1) + "): ");

}

}

System.out.println("Determinant of the matrix: " + Utility.determinant(matrix));

}

}

Содержание Utility.java:

import java.util.Arrays;

public class Utility {

public static int[] readArray(int size) {

int[] array = new int[size];

for (int i = 0; i < size; i++) {

array[i] = readInteger("Enter number " + (i + 1) + ": ");

}

return array;

}

public static int readInteger(String prompt) {

System.out.print(prompt);

int n = Integer.parseInt(System.console().readLine());

return n;

}

public static void printArray(int[] array) {

System.out.println(Arrays.toString(array));

}

public static int determinant(int[][] matrix) {

int size = matrix.length;

if (size == 1) {

return matrix[0][0];

}

if (size == 2) {

return matrix[0][0] * matrix[1][1] - matrix[0][1] * matrix[1][0];

}

int det = 0;

for (int i = 0; i < size; i++) {

int[][] subMatrix = new int[size - 1][size - 1];

for (int j = 1; j < size; j++) {

for (int k = 0; k < size; k++) {

if (k != i) {

subMatrix[j - 1][k < i ? k : k - 1] = matrix[j][k];

}

}

}

det += ((i % 2 == 0) ? 1 : -1) * matrix[0][i] * determinant(subMatrix);

}

return det;

}

}

Результат выполнения:

Лабораторная работа №2

Создать классы, спецификации которых приведены ниже. Определить конструкторы и методы setТип(), getТип(), toString(). Определить дополнительно методы в классе, создающем массив объектов. Реализовать методы сложения, вычитания, умножения и деления объектов (для тех классов, объекты которых могут поддерживать арифметические действия). Задать критерий выбора данных и вывести эти данные на консоль. В каждом классе, обладающем информацией, должно быть объявлено несколько конструкторов.

24. Определить класс Четырехугольник на плоскости, вершины которого имеют тип Точка. Определить площадь и периметр четырехугольника. Создать массив/список/множество объектов и подсчитать количество четырехугольников разного типа (квадрат, прямоугольник, ромб, произвольный). Определить для каждой группы наибольший и наименьший по площади (периметру) объект.

import java.awt.Point;

import java.util.Arrays;

import java.util.HashMap;

import java.util.List;

import java.util.Map;

import java.util.stream.Collectors;

class Четырехугольник {

Point[] вершины;

public Четырехугольник(Point... вершины) {

this.вершины = вершины;

}

public Point getТочка(int index) {

return вершины[index];

}

public void setТочка(int index, Point точка) {

вершины[index] = точка;

}

public double getПериметр() {

double periметр = 0;

for (int i = 0; i < вершины.length; i++) {

periметр += вершины[i].distance(вершины[(i + 1) % вершины.length]);

}

return periметр;

}

public double getПлощадь() {

double area = 0;

int n = вершины.length;

for (int i = 0; i < n; i++) {

area += (vertexes[i].x * vertexes[(i + 1) % n].y) - (vertexes[i].y * vertexes[(i + 1) % n].x);

}

return Math.abs(area) / 2;

}

@Override

public String toString() {

return "Четырехугольник: " + Arrays.toString(вершины);

}

}

public class Main {

public static void main(String[] args) {

Четырехугольник[] fourAngledShapes = new Четырехугольник[]{

new Четырехугольник(new Point(0, 0), new Point(1, 0), new Point(1, 1), new Point(0, 1)), // Квадрат

new Четырехугольник(new Point(0, 0), new Point(2, 0), new Point(2, 3), new Point(0, 3)), // Прямоугольник

new Четырехугольник(new Point(1, 1), new Point(4, 1), new Point(3, 4), new Point(2, 3)), // Ромб

new Четырехугольник(new Point(0, 0), new Point(1, 2), new Point(3, 2), new Point(2, 3)) // Произвольный

};

Map<String, List<Четырехугольник>> shapeMap = Arrays.stream(fourAngledShapes)

.collect(Collectors.groupingBy(fourAngledShape -> {

if (fourAngledShape.getПериметр() == 4) {

return "Квадрат";

} else if (fourAngledShape.getПериметр() == 6) {

return "Прямоугольник";

} else if (fourAngledShape.getПериметр() == 8) {

return "Ромб";

} else {

return "Произвольный";

}

}));

for (Map.Entry<String, List<Четырехугольник>> entry : shapeMap.entrySet()) {

System.out.println("Тип четырехугольника: " + entry.getKey());

System.out.println("Количество объектов: " + entry.getValue().size());

double minPerimeter = entry.getValue().stream().mapToDouble(fourAngledShape -> fourAngledShape.getПериметр()).min().getAsDouble();

double maxPerimeter = entry.getValue().stream().mapToDouble(fourAngledShape -> fourAngledShape.getПериметр()).max().getAsDouble();

import java.util.Scanner;

public class Main {

public static void main(String[] args) {

Scanner scanner = new Scanner(System.in);

// ввод количества четырехугольников

System.out.print("Введите количество четырехугольников: ");

int count = scanner.nextInt();

// массив для хранения четырехугольников

Quadrilateral[] quadrilaterals = new Quadrilateral[count];

// ввод четырехугольников

for (int i = 0; i < count; i++) {

System.out.println("Введите четырехугольник номер " + (i + 1));

System.out.print("Введите тип четырехугольника (квадрат, прямоугольник, ромб, произвольный): ");

String type = scanner.next();

System.out.print("Введите длину стороны A: ");

double sideA = scanner.nextDouble();

System.out.print("Введите длину стороны B: ");

double sideB = scanner.nextDouble();

System.out.print("Введите длину стороны C: ");

double sideC = scanner.nextDouble();

System.out.print("Введите длину стороны D: ");

double sideD = scanner.nextDouble();

Quadrilateral quadrilateral = new Quadrilateral(type, sideA, sideB, sideC, sideD);

quadrilaterals[i] = quadrilateral;

}

// анализ и вывод результатов

// ...

scanner.close();

}

}