diff --git a/pom.xml b/pom.xml index 3abccea2f..cb1ad7028 100644 --- a/pom.xml +++ b/pom.xml @@ -30,6 +30,7 @@ students/23K0135 students/23K0623 students/0000001 + students/23K9006 students/23K0093 students/23K0690 students/23K0120 diff --git a/students/23K9006/23K9006-p01/pom.xml b/students/23K9006/23K9006-p01/pom.xml new file mode 100644 index 000000000..3a03cecb7 --- /dev/null +++ b/students/23K9006/23K9006-p01/pom.xml @@ -0,0 +1,13 @@ + + + 4.0.0 + + 23K9006 + ru.mirea.practice + 2024.1 + ../pom.xml + + 23K9006-p01 + Массивы + diff --git a/students/23K9006/23K9006-p01/src/main/java/ru/mirea/practice/s0000001/First.java b/students/23K9006/23K9006-p01/src/main/java/ru/mirea/practice/s0000001/First.java new file mode 100644 index 000000000..2d5edfb89 --- /dev/null +++ b/students/23K9006/23K9006-p01/src/main/java/ru/mirea/practice/s0000001/First.java @@ -0,0 +1,15 @@ +package ru.mirea.practice.s0000001; + +public abstract class First { + public static void main(String[] args) { + int[] numbers = {1, 2, 3, 4, 5}; + int sum = 0; + for (int number : numbers) { + sum += number; + } + + double average = (double) sum / numbers.length; + System.out.println("Elements sum: " + sum); + System.out.println("Average: " + average); + } +} diff --git a/students/23K9006/23K9006-p01/src/main/java/ru/mirea/practice/s0000001/Four.java b/students/23K9006/23K9006-p01/src/main/java/ru/mirea/practice/s0000001/Four.java new file mode 100644 index 000000000..7f342941a --- /dev/null +++ b/students/23K9006/23K9006-p01/src/main/java/ru/mirea/practice/s0000001/Four.java @@ -0,0 +1,47 @@ +package ru.mirea.practice.s0000001; + +import java.util.Scanner; + +public abstract class Four { + public static void main(String[] args) { + int number; + int[] numbers; + + try (Scanner scanner = new Scanner(System.in)) { + System.out.println("Введите количество элементов в массиве: "); + number = scanner.nextInt(); + numbers = new int[number]; + + System.out.println("Введите элементы массива:"); + for (int i = 0; i < number; i++) { + System.out.print("Элемент " + (i + 1) + ": "); + numbers[i] = scanner.nextInt(); + } + + int sum = 0; + int max = numbers[0]; + int min = numbers[0]; + + int i = 0; + do { + sum += numbers[i]; + i++; + } while (i < number); + + i = 1; + while (i < number) { + if (numbers[i] > max) { + max = numbers[i]; + } + if (numbers[i] < min) { + min = numbers[i]; + } + i++; + } + + System.out.println("Сумма элементов массива: " + sum); + System.out.println("Максимальный элемент: " + max); + System.out.println("Минимальный элемент: " + min); + } + } +} diff --git a/students/23K9006/23K9006-p01/src/main/java/ru/mirea/practice/s0000001/Second.java b/students/23K9006/23K9006-p01/src/main/java/ru/mirea/practice/s0000001/Second.java new file mode 100644 index 000000000..01d0bb3ef --- /dev/null +++ b/students/23K9006/23K9006-p01/src/main/java/ru/mirea/practice/s0000001/Second.java @@ -0,0 +1,23 @@ +package ru.mirea.practice.s0000001; + +import java.util.Scanner; + +public abstract class Second { + public static void main(String[] args) { + int num; + + try (Scanner sc = new Scanner(System.in)) { + System.out.print("Number of elems: "); + num = sc.nextInt(); + int[] numbers = new int[num]; + System.out.println(num); + for (int i = 0; i < num; i++) { + numbers[i] = sc.nextInt(); + } + + for (int number : numbers) { + System.out.print(number + " "); + } + } + } +} diff --git a/students/23K9006/23K9006-p01/src/main/java/ru/mirea/practice/s0000001/Third.java b/students/23K9006/23K9006-p01/src/main/java/ru/mirea/practice/s0000001/Third.java new file mode 100644 index 000000000..6d002da15 --- /dev/null +++ b/students/23K9006/23K9006-p01/src/main/java/ru/mirea/practice/s0000001/Third.java @@ -0,0 +1,19 @@ +package ru.mirea.practice.s0000001; + +public abstract class Third { + public static void main(String[] args) { + int[] numbers = {1, 2, 3, 4, 5}; + + int sum = 0; + for (int number : numbers) { + sum += number; + } + + + double average = (double) sum / numbers.length; + + System.out.println("Сумма элементов массива: " + sum); + System.out.println("Среднее арифметическое: " + average); + } +} + diff --git a/students/23K9006/23K9006-p02/pom.xml b/students/23K9006/23K9006-p02/pom.xml new file mode 100644 index 000000000..58f813a3b --- /dev/null +++ b/students/23K9006/23K9006-p02/pom.xml @@ -0,0 +1,13 @@ + + + 4.0.0 + + 23K9006 + ru.mirea.practice + 2024.1 + ../pom.xml + + 23K9006-p02 + Второе задание + diff --git a/students/23K9006/23K9006-p02/src/main/java/ru/mirea/practice/s0000001/1/Author.java b/students/23K9006/23K9006-p02/src/main/java/ru/mirea/practice/s0000001/1/Author.java new file mode 100644 index 000000000..f0398c898 --- /dev/null +++ b/students/23K9006/23K9006-p02/src/main/java/ru/mirea/practice/s0000001/1/Author.java @@ -0,0 +1,34 @@ +package ru.mirea.practice.s0000001; + +public class Author { + private String name; + private String email; + private char gender; + + public Author(String name, String email, char gender) { + this.name = name; + this.email = email; + this.gender = gender; + } + + public String getName() { + return name; + } + + public String getEmail() { + return email; + } + + public void setEmail(String email) { + this.email = email; + } + + public char getGender() { + return gender; + } + + @Override + public String toString() { + return "Author[name=" + name + ", email=" + email + ", gender=" + gender + "]"; + } +} diff --git a/students/23K9006/23K9006-p02/src/main/java/ru/mirea/practice/s0000001/1/TestAuthor.java b/students/23K9006/23K9006-p02/src/main/java/ru/mirea/practice/s0000001/1/TestAuthor.java new file mode 100644 index 000000000..9dc0953cf --- /dev/null +++ b/students/23K9006/23K9006-p02/src/main/java/ru/mirea/practice/s0000001/1/TestAuthor.java @@ -0,0 +1,16 @@ +package ru.mirea.practice.s0000001; + +public abstract class TestAuthor { + public static void main(String[] args) { + Author author = new Author("John Doe", "john.doe@example.com", 'M'); + + System.out.println("Имя автора: " + author.getName()); + System.out.println("Email автора: " + author.getEmail()); + System.out.println("Пол автора: " + author.getGender()); + + author.setEmail("john.newemail@example.com"); + System.out.println("Новый email автора: " + author.getEmail()); + + System.out.println(author.toString()); + } +} diff --git a/students/23K9006/23K9006-p03/pom.xml b/students/23K9006/23K9006-p03/pom.xml new file mode 100644 index 000000000..c144fba20 --- /dev/null +++ b/students/23K9006/23K9006-p03/pom.xml @@ -0,0 +1,13 @@ + + + 4.0.0 + + 23K9006 + ru.mirea.practice + 2024.1 + ../pom.xml + + 23K9006-p03 + Третье задание + diff --git a/students/23K9006/23K9006-p03/src/main/java/ru/mirea/practice/s0000001/First.java b/students/23K9006/23K9006-p03/src/main/java/ru/mirea/practice/s0000001/First.java new file mode 100644 index 000000000..4000e4b84 --- /dev/null +++ b/students/23K9006/23K9006-p03/src/main/java/ru/mirea/practice/s0000001/First.java @@ -0,0 +1,40 @@ +package ru.mirea.practice.s0000001; + +import java.util.Arrays; +import java.util.Random; + +public abstract class First { + + public static void main(String[] args) { + int arraySize = 10; + + double[] mathRandomArray = new double[arraySize]; + + for (int i = 0; i < arraySize; i++) { + mathRandomArray[i] = Math.random(); + } + + System.out.println("Массив, сгенерированный с использованием Math.random():"); + System.out.println(Arrays.toString(mathRandomArray)); + + Arrays.sort(mathRandomArray); + + System.out.println("Отсортированный массив:"); + System.out.println(Arrays.toString(mathRandomArray)); + + double[] randomArray = new double[arraySize]; + Random random = new Random(); + + for (int i = 0; i < arraySize; i++) { + randomArray[i] = random.nextDouble(); + } + + System.out.println("\nМассив, сгенерированный с использованием Random:"); + System.out.println(Arrays.toString(randomArray)); + + Arrays.sort(randomArray); + + System.out.println("Отсортированный массив:"); + System.out.println(Arrays.toString(randomArray)); + } +} diff --git a/students/23K9006/23K9006-p03/src/main/java/ru/mirea/practice/s0000001/Four.java b/students/23K9006/23K9006-p03/src/main/java/ru/mirea/practice/s0000001/Four.java new file mode 100644 index 000000000..629addb54 --- /dev/null +++ b/students/23K9006/23K9006-p03/src/main/java/ru/mirea/practice/s0000001/Four.java @@ -0,0 +1,36 @@ +package ru.mirea.practice.s0000001; + +public abstract class Four { + + public static void main(String[] args) { + + Double doubleObject1 = Double.valueOf(3.14); + Double doubleObject2 = Double.valueOf("2.718"); + + System.out.println("Значение doubleObject1: " + doubleObject1); + System.out.println("Значение doubleObject2: " + doubleObject2); + + String stringValue = "123.456"; + double primitiveDouble = Double.parseDouble(stringValue); + System.out.println("Преобразованное значение из строки: " + primitiveDouble); + + double primitiveDoubleValue = doubleObject1.doubleValue(); + float primitiveFloatValue = doubleObject1.floatValue(); + int primitiveIntValue = doubleObject1.intValue(); + long primitiveLongValue = doubleObject1.longValue(); + short primitiveShortValue = doubleObject1.shortValue(); + byte primitiveByteValue = doubleObject1.byteValue(); + + System.out.println("Преобразование к типу double: " + primitiveDoubleValue); + System.out.println("Преобразование к типу float: " + primitiveFloatValue); + System.out.println("Преобразование к типу int: " + primitiveIntValue); + System.out.println("Преобразование к типу long: " + primitiveLongValue); + System.out.println("Преобразование к типу short: " + primitiveShortValue); + System.out.println("Преобразование к типу byte: " + primitiveByteValue); + + System.out.println("Значение doubleObject1 (из задания 1): " + doubleObject1); + + String d = Double.toString(3.14); + System.out.println("Преобразованный литерал double к строке: " + d); + } +} diff --git a/students/23K9006/23K9006-p03/src/main/java/ru/mirea/practice/s0000001/Third.java b/students/23K9006/23K9006-p03/src/main/java/ru/mirea/practice/s0000001/Third.java new file mode 100644 index 000000000..b98735aba --- /dev/null +++ b/students/23K9006/23K9006-p03/src/main/java/ru/mirea/practice/s0000001/Third.java @@ -0,0 +1,35 @@ +package ru.mirea.practice.s0000001; + +import java.util.Random; + +public abstract class Third { + + public static void main(String[] args) { + int[] numbers = new int[4]; + Random random = new Random(); + + for (int i = 0; i < numbers.length; i++) { + numbers[i] = 10 + random.nextInt(90); + } + + System.out.print("Массив: "); + for (int num : numbers) { + System.out.print(num + " "); + } + System.out.println(); + + boolean isIncreasing = true; + for (int i = 1; i < numbers.length; i++) { + if (numbers[i] <= numbers[i - 1]) { + isIncreasing = false; + break; + } + } + + if (isIncreasing) { + System.out.println("Массив является строго возрастающей последовательностью."); + } else { + System.out.println("Массив не является строго возрастающей последовательностью."); + } + } +} diff --git a/students/23K9006/23K9006-p04/pom.xml b/students/23K9006/23K9006-p04/pom.xml new file mode 100644 index 000000000..b287c3d76 --- /dev/null +++ b/students/23K9006/23K9006-p04/pom.xml @@ -0,0 +1,13 @@ + + + 4.0.0 + + 23K9006 + ru.mirea.practice + 2024.1 + ../pom.xml + + 23K9006-p04 + Четвертое задание + diff --git a/students/23K9006/23K9006-p04/src/main/java/ru/mirea/practice/s0000001/Atelier.java b/students/23K9006/23K9006-p04/src/main/java/ru/mirea/practice/s0000001/Atelier.java new file mode 100644 index 000000000..55de259ca --- /dev/null +++ b/students/23K9006/23K9006-p04/src/main/java/ru/mirea/practice/s0000001/Atelier.java @@ -0,0 +1,35 @@ +package ru.mirea.practice.s0000001; + +public class Atelier { + + public void dressWomen(Clothes[] clothes) { + System.out.println("Женская одежда:"); + for (Clothes item : clothes) { + if (item instanceof WomenClothing) { + ((WomenClothing) item).dressWomen(); + } + } + } + + public void dressMan(Clothes[] clothes) { + System.out.println("Мужская одежда:"); + for (Clothes item : clothes) { + if (item instanceof MenClothing) { + ((MenClothing) item).dressMan(); + } + } + } + + public static void main(String[] args) { + Clothes[] clothesArray = { + new TShirt(Size.M, 25.99, "красный"), + new Pants(Size.L, 45.99, "синий"), + new Skirt(Size.S, 29.99, "черный"), + new Tie(Size.M, 15.99, "зеленый") + }; + + Atelier atelier = new Atelier(); + atelier.dressWomen(clothesArray); + atelier.dressMan(clothesArray); + } +} diff --git a/students/23K9006/23K9006-p04/src/main/java/ru/mirea/practice/s0000001/Clothes.java b/students/23K9006/23K9006-p04/src/main/java/ru/mirea/practice/s0000001/Clothes.java new file mode 100644 index 000000000..484f97daa --- /dev/null +++ b/students/23K9006/23K9006-p04/src/main/java/ru/mirea/practice/s0000001/Clothes.java @@ -0,0 +1,25 @@ +package ru.mirea.practice.s0000001; + +public abstract class Clothes { + private Size size; + private double price; + private String color; + + public Clothes(Size size, double price, String color) { + this.size = size; + this.price = price; + this.color = color; + } + + public Size getSize() { + return size; + } + + public double getPrice() { + return price; + } + + public String getColor() { + return color; + } +} diff --git a/students/23K9006/23K9006-p04/src/main/java/ru/mirea/practice/s0000001/Main.java b/students/23K9006/23K9006-p04/src/main/java/ru/mirea/practice/s0000001/Main.java new file mode 100644 index 000000000..fefc70774 --- /dev/null +++ b/students/23K9006/23K9006-p04/src/main/java/ru/mirea/practice/s0000001/Main.java @@ -0,0 +1,38 @@ +package ru.mirea.practice.s0000001; + +public abstract class Main { + + public static void main(String[] args) { + Season myFavoriteSeason = Season.SUMMER; + System.out.println("Мое любимое время года: " + myFavoriteSeason); + System.out.println("Средняя температура: " + myFavoriteSeason.getAverageTemperature()); + System.out.println("Описание: " + myFavoriteSeason.getDescription()); + + printSeasonDescription(myFavoriteSeason); + + for (Season season : Season.values()) { + System.out.println(season + " имеет среднюю температуру " + season.getAverageTemperature() + + " градусов. " + season.getDescription()); + } + } + + public static void printSeasonDescription(Season season) { + switch (season) { + case WINTER: + System.out.println("Я люблю зиму"); + break; + case SPRING: + System.out.println("Я люблю весну"); + break; + case SUMMER: + System.out.println("Я люблю лето"); + break; + case FALL: + System.out.println("Я люблю осень"); + break; + default: + System.out.println("Неизвестное время года"); + break; + } + } +} diff --git a/students/23K9006/23K9006-p04/src/main/java/ru/mirea/practice/s0000001/MenClothing.java b/students/23K9006/23K9006-p04/src/main/java/ru/mirea/practice/s0000001/MenClothing.java new file mode 100644 index 000000000..aac375993 --- /dev/null +++ b/students/23K9006/23K9006-p04/src/main/java/ru/mirea/practice/s0000001/MenClothing.java @@ -0,0 +1,5 @@ +package ru.mirea.practice.s0000001; + +public interface MenClothing { + void dressMan(); +} diff --git a/students/23K9006/23K9006-p04/src/main/java/ru/mirea/practice/s0000001/Pants.java b/students/23K9006/23K9006-p04/src/main/java/ru/mirea/practice/s0000001/Pants.java new file mode 100644 index 000000000..7b07d741e --- /dev/null +++ b/students/23K9006/23K9006-p04/src/main/java/ru/mirea/practice/s0000001/Pants.java @@ -0,0 +1,17 @@ +package ru.mirea.practice.s0000001; + +public class Pants extends Clothes implements MenClothing, WomenClothing { + public Pants(Size size, double price, String color) { + super(size, price, color); + } + + @Override + public void dressMan() { + System.out.println("Штаны для мужчин: размер " + getSize() + ", цвет " + getColor() + ", цена " + getPrice()); + } + + @Override + public void dressWomen() { + System.out.println("Штаны для женщин: размер " + getSize() + ", цвет " + getColor() + ", цена " + getPrice()); + } +} diff --git a/students/23K9006/23K9006-p04/src/main/java/ru/mirea/practice/s0000001/Season.java b/students/23K9006/23K9006-p04/src/main/java/ru/mirea/practice/s0000001/Season.java new file mode 100644 index 000000000..54605a11e --- /dev/null +++ b/students/23K9006/23K9006-p04/src/main/java/ru/mirea/practice/s0000001/Season.java @@ -0,0 +1,27 @@ +package ru.mirea.practice.s0000001; + +public enum Season { + WINTER(-5), + SPRING(10), + SUMMER(25) { + @Override + public String getDescription() { + return "Теплое время года"; + } + }, + FALL(8); + + private final int averageTemperature; + + Season(int averageTemperature) { + this.averageTemperature = averageTemperature; + } + + public int getAverageTemperature() { + return averageTemperature; + } + + public String getDescription() { + return "Холодное время года"; + } +} diff --git a/students/23K9006/23K9006-p04/src/main/java/ru/mirea/practice/s0000001/Size.java b/students/23K9006/23K9006-p04/src/main/java/ru/mirea/practice/s0000001/Size.java new file mode 100644 index 000000000..23ea574ca --- /dev/null +++ b/students/23K9006/23K9006-p04/src/main/java/ru/mirea/practice/s0000001/Size.java @@ -0,0 +1,28 @@ +package ru.mirea.practice.s0000001; + +public enum Size { + XXS(32) { + @Override + public String getDescription() { + return "Детский размер"; + } + }, + XS(34), + S(36), + M(38), + L(40); + + private final int euroSize; + + Size(int euroSize) { + this.euroSize = euroSize; + } + + public int getEuroSize() { + return euroSize; + } + + public String getDescription() { + return "Взрослый размер"; + } +} diff --git a/students/23K9006/23K9006-p04/src/main/java/ru/mirea/practice/s0000001/Skirt.java b/students/23K9006/23K9006-p04/src/main/java/ru/mirea/practice/s0000001/Skirt.java new file mode 100644 index 000000000..ef9e168e0 --- /dev/null +++ b/students/23K9006/23K9006-p04/src/main/java/ru/mirea/practice/s0000001/Skirt.java @@ -0,0 +1,12 @@ +package ru.mirea.practice.s0000001; + +public class Skirt extends Clothes implements WomenClothing { + public Skirt(Size size, double price, String color) { + super(size, price, color); + } + + @Override + public void dressWomen() { + System.out.println("Юбка: размер " + getSize() + ", цвет " + getColor() + ", цена " + getPrice()); + } +} diff --git a/students/23K9006/23K9006-p04/src/main/java/ru/mirea/practice/s0000001/TShirt.java b/students/23K9006/23K9006-p04/src/main/java/ru/mirea/practice/s0000001/TShirt.java new file mode 100644 index 000000000..d4b93458f --- /dev/null +++ b/students/23K9006/23K9006-p04/src/main/java/ru/mirea/practice/s0000001/TShirt.java @@ -0,0 +1,17 @@ +package ru.mirea.practice.s0000001; + +public class TShirt extends Clothes implements MenClothing, WomenClothing { + public TShirt(Size size, double price, String color) { + super(size, price, color); + } + + @Override + public void dressMan() { + System.out.println("Футболка для мужчин: размер " + getSize() + ", цвет " + getColor() + ", цена " + getPrice()); + } + + @Override + public void dressWomen() { + System.out.println("Футболка для женщин: размер " + getSize() + ", цвет " + getColor() + ", цена " + getPrice()); + } +} diff --git a/students/23K9006/23K9006-p04/src/main/java/ru/mirea/practice/s0000001/Tie.java b/students/23K9006/23K9006-p04/src/main/java/ru/mirea/practice/s0000001/Tie.java new file mode 100644 index 000000000..c1c4a91e9 --- /dev/null +++ b/students/23K9006/23K9006-p04/src/main/java/ru/mirea/practice/s0000001/Tie.java @@ -0,0 +1,12 @@ +package ru.mirea.practice.s0000001; + +public class Tie extends Clothes implements MenClothing { + public Tie(Size size, double price, String color) { + super(size, price, color); + } + + @Override + public void dressMan() { + System.out.println("Галстук: размер " + getSize() + ", цвет " + getColor() + ", цена " + getPrice()); + } +} diff --git a/students/23K9006/23K9006-p04/src/main/java/ru/mirea/practice/s0000001/WomenClothing.java b/students/23K9006/23K9006-p04/src/main/java/ru/mirea/practice/s0000001/WomenClothing.java new file mode 100644 index 000000000..7d5829871 --- /dev/null +++ b/students/23K9006/23K9006-p04/src/main/java/ru/mirea/practice/s0000001/WomenClothing.java @@ -0,0 +1,5 @@ +package ru.mirea.practice.s0000001; + +public interface WomenClothing { + void dressWomen(); +} diff --git a/students/23K9006/23K9006-p05/pom.xml b/students/23K9006/23K9006-p05/pom.xml new file mode 100644 index 000000000..cd6946a5d --- /dev/null +++ b/students/23K9006/23K9006-p05/pom.xml @@ -0,0 +1,13 @@ + + + 4.0.0 + + 23K9006 + ru.mirea.practice + 2024.1 + ../pom.xml + + 23K9006-p05 + Пятое задание + diff --git a/students/23K9006/23K9006-p05/src/main/java/ru/mirea/practice/s0000001/1/2/Circle.java b/students/23K9006/23K9006-p05/src/main/java/ru/mirea/practice/s0000001/1/2/Circle.java new file mode 100644 index 000000000..e5283e652 --- /dev/null +++ b/students/23K9006/23K9006-p05/src/main/java/ru/mirea/practice/s0000001/1/2/Circle.java @@ -0,0 +1,19 @@ +package ru.mirea.practice.s0000001; + +import java.awt.Color; +import java.awt.Graphics; + +public class Circle extends Shape { + private int radius; + + public Circle(Color color, int x, int y, int radius) { + super(color, x, y); + this.radius = radius; + } + + @Override + public void draw(Graphics g) { + g.setColor(color); + g.fillOval(x, y, radius * 2, radius * 2); + } +} diff --git a/students/23K9006/23K9006-p05/src/main/java/ru/mirea/practice/s0000001/1/2/Shape.java b/students/23K9006/23K9006-p05/src/main/java/ru/mirea/practice/s0000001/1/2/Shape.java new file mode 100644 index 000000000..7b41a0d03 --- /dev/null +++ b/students/23K9006/23K9006-p05/src/main/java/ru/mirea/practice/s0000001/1/2/Shape.java @@ -0,0 +1,18 @@ +package ru.mirea.practice.s0000001; + +import java.awt.Color; +import java.awt.Graphics; + +public abstract class Shape { + protected Color color; + protected int x; + protected int y; + + public Shape(Color color, int x, int y) { + this.color = color; + this.x = x; + this.y = y; + } + + public abstract void draw(Graphics g); +} diff --git a/students/23K9006/23K9006-p05/src/main/java/ru/mirea/practice/s0000001/1/FootballMatchSimulation.java b/students/23K9006/23K9006-p05/src/main/java/ru/mirea/practice/s0000001/1/FootballMatchSimulation.java new file mode 100644 index 000000000..05630060e --- /dev/null +++ b/students/23K9006/23K9006-p05/src/main/java/ru/mirea/practice/s0000001/1/FootballMatchSimulation.java @@ -0,0 +1,73 @@ +package ru.mirea.practice.s0000001; + +import javax.swing.JButton; +import javax.swing.JFrame; +import javax.swing.JLabel; +import javax.swing.SwingConstants; +import java.awt.GridLayout; +import java.awt.event.ActionEvent; +import java.awt.event.ActionListener; + +public class FootballMatchSimulation extends JFrame { + private int scoreMilan = 0; + private int scoreMadrid = 0; + + private JLabel resultLabel; + private JLabel lastScorerLabel; + private JLabel winnerLabel; + + public FootballMatchSimulation() { + setTitle("Football Match Simulation"); + setSize(400, 200); + setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE); + setLayout(new GridLayout(4, 1)); + + final JButton buttonMilan = new JButton("AC Milan"); + final JButton buttonMadrid = new JButton("Real Madrid"); + + resultLabel = new JLabel("Result: 0 X 0", SwingConstants.CENTER); + lastScorerLabel = new JLabel("Last Scorer: N/A", SwingConstants.CENTER); + winnerLabel = new JLabel("Winner: DRAW", SwingConstants.CENTER); + + buttonMilan.addActionListener(new ActionListener() { + @Override + public void actionPerformed(ActionEvent e) { + scoreMilan++; + updateGame("AC Milan"); + } + }); + + buttonMadrid.addActionListener(new ActionListener() { + @Override + public void actionPerformed(ActionEvent e) { + scoreMadrid++; + updateGame("Real Madrid"); + } + }); + + add(buttonMilan); + add(buttonMadrid); + add(resultLabel); + add(lastScorerLabel); + add(winnerLabel); + + setVisible(true); + } + + private void updateGame(String lastScorer) { + resultLabel.setText("Result: " + scoreMilan + " X " + scoreMadrid); + lastScorerLabel.setText("Last Scorer: " + lastScorer); + + if (scoreMilan > scoreMadrid) { + winnerLabel.setText("Winner: AC Milan"); + } else if (scoreMadrid > scoreMilan) { + winnerLabel.setText("Winner: Real Madrid"); + } else { + winnerLabel.setText("Winner: DRAW"); + } + } + + public static void main(String[] args) { + new FootballMatchSimulation(); + } +} diff --git a/students/23K9006/23K9006-p06/pom.xml b/students/23K9006/23K9006-p06/pom.xml new file mode 100644 index 000000000..c8cd48800 --- /dev/null +++ b/students/23K9006/23K9006-p06/pom.xml @@ -0,0 +1,13 @@ + + + 4.0.0 + + 23K9006 + ru.mirea.practice + 2024.1 + ../pom.xml + + 23K9006-p06 + Шестое задание + diff --git a/students/23K9006/23K9006-p06/src/main/java/ru/mirea/practice/s0000001/Movable.java b/students/23K9006/23K9006-p06/src/main/java/ru/mirea/practice/s0000001/Movable.java new file mode 100644 index 000000000..ec7b83ad3 --- /dev/null +++ b/students/23K9006/23K9006-p06/src/main/java/ru/mirea/practice/s0000001/Movable.java @@ -0,0 +1,12 @@ +package ru.mirea.practice.s0000001; + +public interface Movable { + + void moveUp(); + + void moveDown(); + + void moveLeft(); + + void moveRight(); +} diff --git a/students/23K9006/23K9006-p06/src/main/java/ru/mirea/practice/s0000001/MovableCircle.java b/students/23K9006/23K9006-p06/src/main/java/ru/mirea/practice/s0000001/MovableCircle.java new file mode 100644 index 000000000..8168db53b --- /dev/null +++ b/students/23K9006/23K9006-p06/src/main/java/ru/mirea/practice/s0000001/MovableCircle.java @@ -0,0 +1,36 @@ +package ru.mirea.practice.s0000001; + +public class MovableCircle implements Movable { + private int radius; + private MovablePoint center; + + public MovableCircle(int x, int y, int xspeed, int yspeed, int radius) { + this.radius = radius; + this.center = new MovablePoint(x, y, xspeed, yspeed); + } + + @Override + public void moveUp() { + center.moveUp(); + } + + @Override + public void moveDown() { + center.moveDown(); + } + + @Override + public void moveLeft() { + center.moveLeft(); + } + + @Override + public void moveRight() { + center.moveRight(); + } + + @Override + public String toString() { + return "MovableCircle{radius=" + radius + ", center=" + center + '}'; + } +} diff --git a/students/23K9006/23K9006-p06/src/main/java/ru/mirea/practice/s0000001/MovablePoint.java b/students/23K9006/23K9006-p06/src/main/java/ru/mirea/practice/s0000001/MovablePoint.java new file mode 100644 index 000000000..e53d9b3bd --- /dev/null +++ b/students/23K9006/23K9006-p06/src/main/java/ru/mirea/practice/s0000001/MovablePoint.java @@ -0,0 +1,40 @@ +package ru.mirea.practice.s0000001; + +public class MovablePoint implements Movable { + protected int x; + protected int y; + protected int xspeed; + protected int yspeed; + + public MovablePoint(int x, int y, int xspeed, int yspeed) { + this.x = x; + this.y = y; + this.xspeed = xspeed; + this.yspeed = yspeed; + } + + @Override + public void moveUp() { + y += yspeed; + } + + @Override + public void moveDown() { + y -= yspeed; + } + + @Override + public void moveLeft() { + x -= xspeed; + } + + @Override + public void moveRight() { + x += xspeed; + } + + @Override + public String toString() { + return "MovablePoint{x=" + x + ", y=" + y + ", xspeed=" + xspeed + ", yspeed=" + yspeed + '}'; + } +} diff --git a/students/23K9006/23K9006-p06/src/main/java/ru/mirea/practice/s0000001/MovableRectangle.java b/students/23K9006/23K9006-p06/src/main/java/ru/mirea/practice/s0000001/MovableRectangle.java new file mode 100644 index 000000000..abcf8fd0c --- /dev/null +++ b/students/23K9006/23K9006-p06/src/main/java/ru/mirea/practice/s0000001/MovableRectangle.java @@ -0,0 +1,64 @@ +package ru.mirea.practice.s0000001; + +public class MovableRectangle implements Movable { + private MovablePoint topLeft; + private MovablePoint bottomRight; + + public MovableRectangle(int x1, int y1, int x2, int y2, int xspeed, int yspeed) { + this.topLeft = new MovablePoint(x1, y1, xspeed, yspeed); + this.bottomRight = new MovablePoint(x2, y2, xspeed, yspeed); + } + + private boolean hasSameSpeed() { + return topLeft.xspeed == bottomRight.xspeed && topLeft.yspeed == bottomRight.yspeed; + } + + @Override + public void moveUp() { + if (hasSameSpeed()) { + topLeft.moveUp(); + bottomRight.moveUp(); + } else { + System.out.println("Точки движутся с разной скоростью."); + } + } + + @Override + public void moveDown() { + if (hasSameSpeed()) { + topLeft.moveDown(); + bottomRight.moveDown(); + } else { + System.out.println("Точки движутся с разной скоростью."); + } + } + + @Override + public void moveLeft() { + if (hasSameSpeed()) { + topLeft.moveLeft(); + bottomRight.moveLeft(); + } else { + System.out.println("Точки движутся с разной скоростью."); + } + } + + @Override + public void moveRight() { + if (hasSameSpeed()) { + topLeft.moveRight(); + bottomRight.moveRight(); + } else { + System.out.println("Точки движутся с разной скоростью."); + } + } + + @Override + public String toString() { + return "MovableRectangle{" + + "topLeft=" + topLeft + + ", bottomRight=" + + bottomRight + + '}'; + } +} diff --git a/students/23K9006/23K9006-p07/pom.xml b/students/23K9006/23K9006-p07/pom.xml new file mode 100644 index 000000000..a702b123c --- /dev/null +++ b/students/23K9006/23K9006-p07/pom.xml @@ -0,0 +1,13 @@ + + + 4.0.0 + + 23K9006 + ru.mirea.practice + 2024.1 + ../pom.xml + + 23K9006-p07 + Седьмое задание + diff --git a/students/23K9006/23K9006-p07/src/main/java/ru/mirea/practice/s0000001/2/1/Movable2.java b/students/23K9006/23K9006-p07/src/main/java/ru/mirea/practice/s0000001/2/1/Movable2.java new file mode 100644 index 000000000..3161072e0 --- /dev/null +++ b/students/23K9006/23K9006-p07/src/main/java/ru/mirea/practice/s0000001/2/1/Movable2.java @@ -0,0 +1,12 @@ +package ru.mirea.practice.s0000001; + +public interface Movable2 { + + void moveUp(); + + void moveDown(); + + void moveLeft(); + + void moveRight(); +} diff --git a/students/23K9006/23K9006-p07/src/main/java/ru/mirea/practice/s0000001/2/1/Movable2Point.java b/students/23K9006/23K9006-p07/src/main/java/ru/mirea/practice/s0000001/2/1/Movable2Point.java new file mode 100644 index 000000000..d418a49ba --- /dev/null +++ b/students/23K9006/23K9006-p07/src/main/java/ru/mirea/practice/s0000001/2/1/Movable2Point.java @@ -0,0 +1,40 @@ +package ru.mirea.practice.s0000001; + +public class Movable2Point implements Movable { + protected int x; + protected int y; + protected int xspeed; + protected int yspeed; + + public Movable2Point(int x, int y, int xspeed, int yspeed) { + this.x = x; + this.y = y; + this.xspeed = xspeed; + this.yspeed = yspeed; + } + + @Override + public void moveUp() { + y += yspeed; + } + + @Override + public void moveDown() { + y -= yspeed; + } + + @Override + public void moveLeft() { + x -= xspeed; + } + + @Override + public void moveRight() { + x += xspeed; + } + + @Override + public String toString() { + return "MovablePoint{x=" + x + ", y=" + y + ", xspeed=" + xspeed + ", yspeed=" + yspeed + '}'; + } +} diff --git a/students/23K9006/23K9006-p07/src/main/java/ru/mirea/practice/s0000001/2/1/Movable2Rectangle.java b/students/23K9006/23K9006-p07/src/main/java/ru/mirea/practice/s0000001/2/1/Movable2Rectangle.java new file mode 100644 index 000000000..2e1c6b2db --- /dev/null +++ b/students/23K9006/23K9006-p07/src/main/java/ru/mirea/practice/s0000001/2/1/Movable2Rectangle.java @@ -0,0 +1,60 @@ +package ru.mirea.practice.s0000001; + +public class Movable2Rectangle implements Movable { + private Movable2Point topLeft; + private Movable2Point bottomRight; + + public Movable2Rectangle(int x1, int y1, int x2, int y2, int xspeed, int yspeed) { + this.topLeft = new Movable2Point(x1, y1, xspeed, yspeed); + this.bottomRight = new Movable2Point(x2, y2, xspeed, yspeed); + } + + private boolean hasSameSpeed() { + return topLeft.xspeed == bottomRight.xspeed && topLeft.yspeed == bottomRight.yspeed; + } + + @Override + public void moveUp() { + if (hasSameSpeed()) { + topLeft.moveUp(); + bottomRight.moveUp(); + } else { + System.out.println("Точки движутся с разной скоростью."); + } + } + + @Override + public void moveDown() { + if (hasSameSpeed()) { + topLeft.moveDown(); + bottomRight.moveDown(); + } else { + System.out.println("Точки движутся с разной скоростью."); + } + } + + @Override + public void moveLeft() { + if (hasSameSpeed()) { + topLeft.moveLeft(); + bottomRight.moveLeft(); + } else { + System.out.println("Точки движутся с разной скоростью."); + } + } + + @Override + public void moveRight() { + if (hasSameSpeed()) { + topLeft.moveRight(); + bottomRight.moveRight(); + } else { + System.out.println("Точки движутся с разной скоростью."); + } + } + + @Override + public String toString() { + return "MovableRectangle{topLeft=" + topLeft + ", bottomRight=" + bottomRight + '}'; + } +} diff --git a/students/23K9006/23K9006-p07/src/main/java/ru/mirea/practice/s0000001/Movable.java b/students/23K9006/23K9006-p07/src/main/java/ru/mirea/practice/s0000001/Movable.java new file mode 100644 index 000000000..ec7b83ad3 --- /dev/null +++ b/students/23K9006/23K9006-p07/src/main/java/ru/mirea/practice/s0000001/Movable.java @@ -0,0 +1,12 @@ +package ru.mirea.practice.s0000001; + +public interface Movable { + + void moveUp(); + + void moveDown(); + + void moveLeft(); + + void moveRight(); +} diff --git a/students/23K9006/23K9006-p07/src/main/java/ru/mirea/practice/s0000001/MovablePoint.java b/students/23K9006/23K9006-p07/src/main/java/ru/mirea/practice/s0000001/MovablePoint.java new file mode 100644 index 000000000..e53d9b3bd --- /dev/null +++ b/students/23K9006/23K9006-p07/src/main/java/ru/mirea/practice/s0000001/MovablePoint.java @@ -0,0 +1,40 @@ +package ru.mirea.practice.s0000001; + +public class MovablePoint implements Movable { + protected int x; + protected int y; + protected int xspeed; + protected int yspeed; + + public MovablePoint(int x, int y, int xspeed, int yspeed) { + this.x = x; + this.y = y; + this.xspeed = xspeed; + this.yspeed = yspeed; + } + + @Override + public void moveUp() { + y += yspeed; + } + + @Override + public void moveDown() { + y -= yspeed; + } + + @Override + public void moveLeft() { + x -= xspeed; + } + + @Override + public void moveRight() { + x += xspeed; + } + + @Override + public String toString() { + return "MovablePoint{x=" + x + ", y=" + y + ", xspeed=" + xspeed + ", yspeed=" + yspeed + '}'; + } +} diff --git a/students/23K9006/23K9006-p07/src/main/java/ru/mirea/practice/s0000001/MovableRectangle.java b/students/23K9006/23K9006-p07/src/main/java/ru/mirea/practice/s0000001/MovableRectangle.java new file mode 100644 index 000000000..52026f5b4 --- /dev/null +++ b/students/23K9006/23K9006-p07/src/main/java/ru/mirea/practice/s0000001/MovableRectangle.java @@ -0,0 +1,60 @@ +package ru.mirea.practice.s0000001; + +public class MovableRectangle implements Movable { + private MovablePoint topLeft; + private MovablePoint bottomRight; + + public MovableRectangle(int x1, int y1, int x2, int y2, int xspeed, int yspeed) { + this.topLeft = new MovablePoint(x1, y1, xspeed, yspeed); + this.bottomRight = new MovablePoint(x2, y2, xspeed, yspeed); + } + + private boolean hasSameSpeed() { + return topLeft.xspeed == bottomRight.xspeed && topLeft.yspeed == bottomRight.yspeed; + } + + @Override + public void moveUp() { + if (hasSameSpeed()) { + topLeft.moveUp(); + bottomRight.moveUp(); + } else { + System.out.println("Точки движутся с разной скоростью."); + } + } + + @Override + public void moveDown() { + if (hasSameSpeed()) { + topLeft.moveDown(); + bottomRight.moveDown(); + } else { + System.out.println("Точки движутся с разной скоростью."); + } + } + + @Override + public void moveLeft() { + if (hasSameSpeed()) { + topLeft.moveLeft(); + bottomRight.moveLeft(); + } else { + System.out.println("Точки движутся с разной скоростью."); + } + } + + @Override + public void moveRight() { + if (hasSameSpeed()) { + topLeft.moveRight(); + bottomRight.moveRight(); + } else { + System.out.println("Точки движутся с разной скоростью."); + } + } + + @Override + public String toString() { + return "MovableRectangle{topLeft=" + topLeft + ", bottomRight=" + bottomRight + '}'; + } +} diff --git a/students/23K9006/23K9006-p08/pom.xml b/students/23K9006/23K9006-p08/pom.xml new file mode 100644 index 000000000..1b3c684a1 --- /dev/null +++ b/students/23K9006/23K9006-p08/pom.xml @@ -0,0 +1,13 @@ + + + 4.0.0 + + 23K9006 + ru.mirea.practice + 2024.1 + ../pom.xml + + 23K9006-p08 + Восьмое задание + diff --git a/students/23K9006/23K9006-p08/src/main/java/ru/mirea/practice/s0000001/NumbersFrom1ToN.java b/students/23K9006/23K9006-p08/src/main/java/ru/mirea/practice/s0000001/NumbersFrom1ToN.java new file mode 100644 index 000000000..dd81706c1 --- /dev/null +++ b/students/23K9006/23K9006-p08/src/main/java/ru/mirea/practice/s0000001/NumbersFrom1ToN.java @@ -0,0 +1,17 @@ +package ru.mirea.practice.s0000001; + +import java.util.Scanner; + +public abstract class NumbersFrom1ToN { + + public static void main(String[] args) { + try (Scanner scanner = new Scanner(System.in)) { + System.out.print("Введите число n: "); + int n = scanner.nextInt(); + + for (int i = 1; i <= n; i++) { + System.out.print(i + " "); + } + } + } +} diff --git a/students/23K9006/23K9006-p08/src/main/java/ru/mirea/practice/s0000001/TriangularSequence.java b/students/23K9006/23K9006-p08/src/main/java/ru/mirea/practice/s0000001/TriangularSequence.java new file mode 100644 index 000000000..5fb627684 --- /dev/null +++ b/students/23K9006/23K9006-p08/src/main/java/ru/mirea/practice/s0000001/TriangularSequence.java @@ -0,0 +1,33 @@ +package ru.mirea.practice.s0000001; + +import java.util.ArrayList; +import java.util.List; +import java.util.Scanner; + +public abstract class TriangularSequence { + + public static void main(String[] args) { + try (Scanner scanner = new Scanner(System.in)) { + System.out.print("Введите число n: "); + int n = scanner.nextInt(); + + List sequence = generateTriangularSequence(n); + + for (int number : sequence) { + System.out.print(number + " "); + } + } + } + + public static List generateTriangularSequence(int n) { + List result = new ArrayList<>(); + int count = 0; + for (int i = 1; count < n; i++) { + for (int j = 0; j < i && count < n; j++) { + result.add(i); + count++; + } + } + return result; + } +} diff --git a/students/23K9006/23K9006-p09/pom.xml b/students/23K9006/23K9006-p09/pom.xml new file mode 100644 index 000000000..0915aae6f --- /dev/null +++ b/students/23K9006/23K9006-p09/pom.xml @@ -0,0 +1,13 @@ + + + 4.0.0 + + 23K9006 + ru.mirea.practice + 2024.1 + ../pom.xml + + 23K9006-p09 + Девятое задание + diff --git a/students/23K9006/23K9006-p09/src/main/java/ru/mirea/practice/s0000001/MergeSortStudents.java b/students/23K9006/23K9006-p09/src/main/java/ru/mirea/practice/s0000001/MergeSortStudents.java new file mode 100644 index 000000000..39007be8e --- /dev/null +++ b/students/23K9006/23K9006-p09/src/main/java/ru/mirea/practice/s0000001/MergeSortStudents.java @@ -0,0 +1,72 @@ +package ru.mirea.practice.s0000001; + +import java.util.ArrayList; +import java.util.List; + +public abstract class MergeSortStudents { + + public static void main(String[] args) { + List list1 = new ArrayList<>(); + list1.add(new Student(105, "Ivan")); + list1.add(new Student(102, "Maria")); + list1.add(new Student(110, "Peter")); + + List list2 = new ArrayList<>(); + list2.add(new Student(101, "Anna")); + list2.add(new Student(108, "John")); + list2.add(new Student(103, "Sophia")); + + List mergedList = mergeAndSort(list1, list2); + + System.out.println("Merged and sorted list:"); + for (Student student : mergedList) { + System.out.println(student); + } + } + + public static List mergeAndSort(List list1, List list2) { + List mergedList = new ArrayList<>(list1); + mergedList.addAll(list2); + return mergeSort(mergedList); + } + + public static List mergeSort(List students) { + if (students.size() <= 1) { + return students; + } + + int mid = students.size() / 2; + List left = new ArrayList<>(students.subList(0, mid)); + List right = new ArrayList<>(students.subList(mid, students.size())); + + return merge(mergeSort(left), mergeSort(right)); + } + + private static List merge(List left, List right) { + List result = new ArrayList<>(); + int i = 0; + int j = 0; + + while (i < left.size() && j < right.size()) { + if (left.get(i).getIdNumber() <= right.get(j).getIdNumber()) { + result.add(left.get(i)); + i++; + } else { + result.add(right.get(j)); + j++; + } + } + + while (i < left.size()) { + result.add(left.get(i)); + i++; + } + + while (j < right.size()) { + result.add(right.get(j)); + j++; + } + + return result; + } +} diff --git a/students/23K9006/23K9006-p09/src/main/java/ru/mirea/practice/s0000001/Student.java b/students/23K9006/23K9006-p09/src/main/java/ru/mirea/practice/s0000001/Student.java new file mode 100644 index 000000000..3c23a722d --- /dev/null +++ b/students/23K9006/23K9006-p09/src/main/java/ru/mirea/practice/s0000001/Student.java @@ -0,0 +1,24 @@ +package ru.mirea.practice.s0000001; + +public class Student { + private int idNumber; + private String name; + + public Student(int idNumber, String name) { + this.idNumber = idNumber; + this.name = name; + } + + public int getIdNumber() { + return idNumber; + } + + public String getName() { + return name; + } + + @Override + public String toString() { + return "Student{idNumber=" + idNumber + ", name='" + name + "'}"; + } +} diff --git a/students/23K9006/23K9006-p09/src/main/java/ru/mirea/practice/s0000001/TestStudent.java b/students/23K9006/23K9006-p09/src/main/java/ru/mirea/practice/s0000001/TestStudent.java new file mode 100644 index 000000000..5d0161520 --- /dev/null +++ b/students/23K9006/23K9006-p09/src/main/java/ru/mirea/practice/s0000001/TestStudent.java @@ -0,0 +1,39 @@ +package ru.mirea.practice.s0000001; + +public abstract class TestStudent { + + public static void main(String[] args) { + Student[] students = new Student[5]; + students[0] = new Student(105, "Ivan"); + students[1] = new Student(102, "Maria"); + students[2] = new Student(110, "Peter"); + students[3] = new Student(101, "Anna"); + students[4] = new Student(108, "John"); + + System.out.println("Before sorting:"); + printStudents(students); + + insertionSort(students); + + System.out.println("\nAfter sorting by iDNumber:"); + printStudents(students); + } + + public static void insertionSort(Student[] students) { + for (int i = 1; i < students.length; i++) { + Student key = students[i]; + int j = i - 1; + while (j >= 0 && students[j].getIdNumber() > key.getIdNumber()) { + students[j + 1] = students[j]; + j = j - 1; + } + students[j + 1] = key; + } + } + + public static void printStudents(Student[] students) { + for (Student student : students) { + System.out.println(student); + } + } +} diff --git a/students/23K9006/23K9006-p10/pom.xml b/students/23K9006/23K9006-p10/pom.xml new file mode 100644 index 000000000..a9f7c19ec --- /dev/null +++ b/students/23K9006/23K9006-p10/pom.xml @@ -0,0 +1,13 @@ + + + 4.0.0 + + 23K9006 + ru.mirea.practice + 2024.1 + ../pom.xml + + 23K9006-p10 + Десятое задание + diff --git a/students/23K9006/23K9006-p10/src/main/java/ru/mirea/practice/s0000001/SortingStudentsbygpa.java b/students/23K9006/23K9006-p10/src/main/java/ru/mirea/practice/s0000001/SortingStudentsbygpa.java new file mode 100644 index 000000000..284304b1c --- /dev/null +++ b/students/23K9006/23K9006-p10/src/main/java/ru/mirea/practice/s0000001/SortingStudentsbygpa.java @@ -0,0 +1,120 @@ +package ru.mirea.practice.s0000001; + +import java.util.ArrayList; +import java.util.Comparator; +import java.util.List; + +public class SortingStudentsbygpa implements Comparator { + + private List students; + + public SortingStudentsbygpa() { + this.students = new ArrayList<>(); + } + + public void setArray() { + students.add(new Student2(101, "Ivan", "Ivanov", 3.5)); + students.add(new Student2(102, "Maria", "Petrova", 4.0)); + students.add(new Student2(103, "Peter", "Sidorov", 3.7)); + students.add(new Student2(104, "Anna", "Smirnova", 3.8)); + students.add(new Student2(105, "John", "Doe", 3.2)); + } + + public void quicksort(int low, int high) { + if (low < high) { + int pi = partition(low, high); + quicksort(low, pi - 1); + quicksort(pi + 1, high); + } + } + + private int partition(int low, int high) { + Student2 pivot = students.get(high); + int i = low - 1; + for (int j = low; j < high; j++) { + if (compare(students.get(j), pivot) > 0) { + i++; + Student2 temp = students.get(i); + students.set(i, students.get(j)); + students.set(j, temp); + } + } + Student2 temp = students.get(i + 1); + students.set(i + 1, students.get(high)); + students.set(high, temp); + return i + 1; + } + + public void mergeSort(int left, int right) { + if (left < right) { + int mid = (left + right) / 2; + mergeSort(left, mid); + mergeSort(mid + 1, right); + merge(left, mid, right); + } + } + + private void merge(int left, int mid, int right) { + List leftList = new ArrayList<>(students.subList(left, mid + 1)); + List rightList = new ArrayList<>(students.subList(mid + 1, right + 1)); + + int i = 0; + int j = 0; + int k = left; + while (i < leftList.size() && j < rightList.size()) { + if (compare(leftList.get(i), rightList.get(j)) > 0) { + students.set(k++, leftList.get(i++)); + } else { + students.set(k++, rightList.get(j++)); + } + } + + while (i < leftList.size()) { + students.set(k++, leftList.get(i++)); + } + + while (j < rightList.size()) { + students.set(k++, rightList.get(j++)); + } + } + + public void outArray() { + for (Student2 student : students) { + System.out.println(student); + } + } + + public void sortByIdNumber() { + students.sort(Comparator.comparingInt(Student2::getIdNumber)); + } + + @Override + public int compare(Student2 s1, Student2 s2) { + return Double.compare(s2.getGpa(), s1.getGpa()); + } + + public static void main(String[] args) { + SortingStudentsbygpa sortingStudents = new SortingStudentsbygpa(); + sortingStudents.setArray(); + + System.out.println("Before sorting by GPA (quick sort):"); + sortingStudents.outArray(); + sortingStudents.quicksort(0, sortingStudents.students.size() - 1); + + System.out.println("\nAfter sorting by GPA (quick sort):"); + sortingStudents.outArray(); + + sortingStudents.setArray(); + + System.out.println("\nBefore sorting by GPA (merge sort):"); + sortingStudents.outArray(); + sortingStudents.mergeSort(0, sortingStudents.students.size() - 1); + + System.out.println("\nAfter sorting by GPA (merge sort):"); + sortingStudents.outArray(); + + System.out.println("\nSorting by ID number:"); + sortingStudents.sortByIdNumber(); + sortingStudents.outArray(); + } +} diff --git a/students/23K9006/23K9006-p10/src/main/java/ru/mirea/practice/s0000001/Student.java b/students/23K9006/23K9006-p10/src/main/java/ru/mirea/practice/s0000001/Student.java new file mode 100644 index 000000000..8acf5ecac --- /dev/null +++ b/students/23K9006/23K9006-p10/src/main/java/ru/mirea/practice/s0000001/Student.java @@ -0,0 +1,77 @@ +package ru.mirea.practice.s0000001; + +public class Student { + private String firstName; + private String lastName; + private String major; + private int course; + private String group; + + public Student(String firstName, String lastName, String major, int course, String group) { + this.firstName = firstName; + this.lastName = lastName; + this.major = major; + this.course = course; + this.group = group; + } + + public String getFirstName() { + return firstName; + } + + public void setFirstName(String firstName) { + this.firstName = firstName; + } + + public String getLastName() { + return lastName; + } + + public void setLastName(String lastName) { + this.lastName = lastName; + } + + public String getMajor() { + return major; + } + + public void setMajor(String major) { + this.major = major; + } + + public int getCourse() { + return course; + } + + public void setCourse(int course) { + this.course = course; + } + + public String getGroup() { + return group; + } + + public void setGroup(String group) { + this.group = group; + } + + @Override + public String toString() { + return "Student{" + + "firstName='" + + firstName + + '\'' + + ", lastName='" + + lastName + + '\'' + + ", major='" + + major + + '\'' + + ", course=" + + course + + ", group='" + + group + + '\'' + + '}'; + } +} diff --git a/students/23K9006/23K9006-p10/src/main/java/ru/mirea/practice/s0000001/Student2.java b/students/23K9006/23K9006-p10/src/main/java/ru/mirea/practice/s0000001/Student2.java new file mode 100644 index 000000000..ef8ca3820 --- /dev/null +++ b/students/23K9006/23K9006-p10/src/main/java/ru/mirea/practice/s0000001/Student2.java @@ -0,0 +1,62 @@ +package ru.mirea.practice.s0000001; + +public class Student2 { + private int idNumber; + private String firstName; + private String lastName; + private double gpa; + + public Student2(int idNumber, String firstName, String lastName, double gpa) { + this.idNumber = idNumber; + this.firstName = firstName; + this.lastName = lastName; + this.gpa = gpa; + } + + public int getIdNumber() { + return idNumber; + } + + public void setIdNumber(int idNumber) { + this.idNumber = idNumber; + } + + public String getFirstName() { + return firstName; + } + + public void setFirstName(String firstName) { + this.firstName = firstName; + } + + public String getLastName() { + return lastName; + } + + public void setLastName(String lastName) { + this.lastName = lastName; + } + + public double getGpa() { + return gpa; + } + + public void setGpa(double gpa) { + this.gpa = gpa; + } + + @Override + public String toString() { + return "Student{idNumber=" + + idNumber + + ", firstName='" + + firstName + + '\'' + + ", lastName='" + + lastName + + '\'' + + ", gpa=" + + gpa + + '}'; + } +} diff --git a/students/23K9006/23K9006-p11/pom.xml b/students/23K9006/23K9006-p11/pom.xml new file mode 100644 index 000000000..ece4bdee2 --- /dev/null +++ b/students/23K9006/23K9006-p11/pom.xml @@ -0,0 +1,13 @@ + + + 4.0.0 + + 23K9006 + ru.mirea.practice + 2024.1 + ../pom.xml + + 23K9006-p11 + одиннадцатое задание + diff --git a/students/23K9006/23K9006-p11/src/main/java/ru/mirea/practice/s0000001/1/1/DateComparison.java b/students/23K9006/23K9006-p11/src/main/java/ru/mirea/practice/s0000001/1/1/DateComparison.java new file mode 100644 index 000000000..29db004b5 --- /dev/null +++ b/students/23K9006/23K9006-p11/src/main/java/ru/mirea/practice/s0000001/1/1/DateComparison.java @@ -0,0 +1,24 @@ +package ru.mirea.practice.s0000001; + +import java.util.Date; + +abstract class DateComparison { + protected Date currentDate; + protected Date userDate; + + public DateComparison() { + this.currentDate = new Date(); // Текущая дата и время + } + + public abstract void setUserDate(String dateString); + + public void compareDates() { + if (userDate.before(currentDate)) { + System.out.println("Введенная дата " + userDate + " раньше текущей даты " + currentDate); + } else if (userDate.after(currentDate)) { + System.out.println("Введенная дата " + userDate + " позже текущей даты " + currentDate); + } else { + System.out.println("Введенная дата " + userDate + " равна текущей дате"); + } + } +} diff --git a/students/23K9006/23K9006-p11/src/main/java/ru/mirea/practice/s0000001/1/1/Main.java b/students/23K9006/23K9006-p11/src/main/java/ru/mirea/practice/s0000001/1/1/Main.java new file mode 100644 index 000000000..61837796a --- /dev/null +++ b/students/23K9006/23K9006-p11/src/main/java/ru/mirea/practice/s0000001/1/1/Main.java @@ -0,0 +1,20 @@ +package ru.mirea.practice.s0000001; + +import java.util.Scanner; + +public final class Main { + private Main() { + } + + public static void main(String[] args) { + try (Scanner scanner = new Scanner(System.in)) { + MyDateComparison dateComparison = new MyDateComparison(); + + System.out.println("Введите дату в формате dd-MM-yyyy HH:mm:ss: "); + String userInput = scanner.nextLine(); + + dateComparison.setUserDate(userInput); + dateComparison.compareDates(); + } + } +} diff --git a/students/23K9006/23K9006-p11/src/main/java/ru/mirea/practice/s0000001/1/1/MyDateComparison.java b/students/23K9006/23K9006-p11/src/main/java/ru/mirea/practice/s0000001/1/1/MyDateComparison.java new file mode 100644 index 000000000..a8be1dd09 --- /dev/null +++ b/students/23K9006/23K9006-p11/src/main/java/ru/mirea/practice/s0000001/1/1/MyDateComparison.java @@ -0,0 +1,17 @@ +package ru.mirea.practice.s0000001; + +import java.text.ParseException; +import java.text.SimpleDateFormat; + +class MyDateComparison extends DateComparison { + + @Override + public void setUserDate(String dateString) { + SimpleDateFormat dateFormat = new SimpleDateFormat("dd-MM-yyyy HH:mm:ss"); + try { + this.userDate = dateFormat.parse(dateString); + } catch (ParseException e) { + System.out.println("Ошибка при вводе даты. Пожалуйста, используйте формат: dd-MM-yyyy HH:mm:ss"); + } + } +} diff --git a/students/23K9006/23K9006-p11/src/main/java/ru/mirea/practice/s0000001/1/2/Assignment.java b/students/23K9006/23K9006-p11/src/main/java/ru/mirea/practice/s0000001/1/2/Assignment.java new file mode 100644 index 000000000..165dc9145 --- /dev/null +++ b/students/23K9006/23K9006-p11/src/main/java/ru/mirea/practice/s0000001/1/2/Assignment.java @@ -0,0 +1,4 @@ +package ru.mirea.practice.s0000001; + +class Assignment { +} diff --git a/students/23K9006/23K9006-p11/src/main/java/ru/mirea/practice/s0000001/1/2/DateComparisonApp.java b/students/23K9006/23K9006-p11/src/main/java/ru/mirea/practice/s0000001/1/2/DateComparisonApp.java new file mode 100644 index 000000000..01d28cc54 --- /dev/null +++ b/students/23K9006/23K9006-p11/src/main/java/ru/mirea/practice/s0000001/1/2/DateComparisonApp.java @@ -0,0 +1,20 @@ +package ru.mirea.practice.s0000001; + +import java.util.Scanner; + +public final class DateComparisonApp { + private DateComparisonApp() { + } + + public static void main(String[] args) { + try (Scanner scanner = new Scanner(System.in)) { + MyDateComparison dateComparison = new MyDateComparison(); + + System.out.println("Введите дату в формате dd-MM-yyyy HH:mm:ss: "); + String userInput = scanner.nextLine(); + + dateComparison.setUserDate(userInput); + dateComparison.compareDates(); + } + } +} diff --git a/students/23K9006/23K9006-p11/src/main/java/ru/mirea/practice/s0000001/1/2/MyAssignment.java b/students/23K9006/23K9006-p11/src/main/java/ru/mirea/practice/s0000001/1/2/MyAssignment.java new file mode 100644 index 000000000..619eda405 --- /dev/null +++ b/students/23K9006/23K9006-p11/src/main/java/ru/mirea/practice/s0000001/1/2/MyAssignment.java @@ -0,0 +1,4 @@ +package ru.mirea.practice.s0000001; + +class MyAssignment extends Assignment { +} diff --git a/students/23K9006/23K9006-p13/pom.xml b/students/23K9006/23K9006-p13/pom.xml new file mode 100644 index 000000000..e146d6a80 --- /dev/null +++ b/students/23K9006/23K9006-p13/pom.xml @@ -0,0 +1,13 @@ + + + 4.0.0 + + 23K9006 + ru.mirea.practice + 2024.1 + ../pom.xml + + 23K9006-p13 + тринадцатое задание + diff --git a/students/23K9006/23K9006-p13/src/main/java/ru/mirea/practice/s0000001/1/1/Employee.java b/students/23K9006/23K9006-p13/src/main/java/ru/mirea/practice/s0000001/1/1/Employee.java new file mode 100644 index 000000000..0da08f1da --- /dev/null +++ b/students/23K9006/23K9006-p13/src/main/java/ru/mirea/practice/s0000001/1/1/Employee.java @@ -0,0 +1,7 @@ +package ru.mirea.practice.s0000001; + +class Employee extends Person { + public Employee(String lastName, String firstName, String middleName) { + super(lastName, firstName, middleName); + } +} diff --git a/students/23K9006/23K9006-p13/src/main/java/ru/mirea/practice/s0000001/1/1/Main1.java b/students/23K9006/23K9006-p13/src/main/java/ru/mirea/practice/s0000001/1/1/Main1.java new file mode 100644 index 000000000..074ac4e84 --- /dev/null +++ b/students/23K9006/23K9006-p13/src/main/java/ru/mirea/practice/s0000001/1/1/Main1.java @@ -0,0 +1,43 @@ +package ru.mirea.practice.s0000001; + +import java.util.Locale; + +public final class Main1 { + private Main1() {} + + public static void main(String[] args) { + String[] shirts = { + "S001,Black Polo Shirt,Black,XL", + "S002,Black Polo Shirt,Black,L", + "S003,Blue Polo Shirt,Blue,XL", + "S004,Blue Polo Shirt,Blue,M", + "S005,Tan Polo Shirt,Tan,XL", + "S006,Black T-Shirt,Black,XL", + "S007,White T-Shirt,White,XL", + "S008,White T-Shirt,White,L", + "S009,Green T-Shirt,Green,S", + "S010,Orange T-Shirt,Orange,S", + "S011,Maroon Polo Shirt,Maroon,S" + }; + + Shirt[] shirtArray = new Shirt[shirts.length]; + + for (int i = 0; i < shirts.length; i++) { + String[] parts = shirts[i].split(","); + String id = parts[0]; + String name = parts[1]; + String color = parts[2]; + String size = parts[3]; + + if (name.toLowerCase(Locale.ROOT).contains("polo")) { + shirtArray[i] = new PoloShirt(id, name, color, size); + } else { + shirtArray[i] = new TShirt(id, name, color, size); + } + } + + for (Shirt shirt : shirtArray) { + System.out.println(shirt); + } + } +} diff --git a/students/23K9006/23K9006-p13/src/main/java/ru/mirea/practice/s0000001/1/1/Main2.java b/students/23K9006/23K9006-p13/src/main/java/ru/mirea/practice/s0000001/1/1/Main2.java new file mode 100644 index 000000000..a435da0c9 --- /dev/null +++ b/students/23K9006/23K9006-p13/src/main/java/ru/mirea/practice/s0000001/1/1/Main2.java @@ -0,0 +1,18 @@ +package ru.mirea.practice.s0000001; + +public final class Main2 { + + private Main2() {} + + public static void main(String[] args) { + Person person1 = new Employee("Иванов", "Иван", "Иванович"); + Person person2 = new Employee("Петров", "Петр", null); + Person person3 = new Employee("Сидоров", null, "Сидорович"); + Person person4 = new Employee("Кузнецов", null, null); + + System.out.println(person1.getFullName()); + System.out.println(person2.getFullName()); + System.out.println(person3.getFullName()); + System.out.println(person4.getFullName()); + } +} diff --git a/students/23K9006/23K9006-p13/src/main/java/ru/mirea/practice/s0000001/1/1/Person.java b/students/23K9006/23K9006-p13/src/main/java/ru/mirea/practice/s0000001/1/1/Person.java new file mode 100644 index 000000000..21ac46d2f --- /dev/null +++ b/students/23K9006/23K9006-p13/src/main/java/ru/mirea/practice/s0000001/1/1/Person.java @@ -0,0 +1,24 @@ +package ru.mirea.practice.s0000001; + +abstract class Person { + protected String lastName; + protected String firstName; + protected String middleName; + + public Person(String lastName, String firstName, String middleName) { + this.lastName = lastName; + this.firstName = firstName; + this.middleName = middleName; + } + + public String getFullName() { + StringBuilder fullName = new StringBuilder(lastName); + if (firstName != null && !firstName.isEmpty()) { + fullName.append(" ").append(firstName.charAt(0)).append("."); + } + if (middleName != null && !middleName.isEmpty()) { + fullName.append(" ").append(middleName.charAt(0)).append("."); + } + return fullName.toString(); + } +} diff --git a/students/23K9006/23K9006-p13/src/main/java/ru/mirea/practice/s0000001/1/1/PoloShirt.java b/students/23K9006/23K9006-p13/src/main/java/ru/mirea/practice/s0000001/1/1/PoloShirt.java new file mode 100644 index 000000000..21164210c --- /dev/null +++ b/students/23K9006/23K9006-p13/src/main/java/ru/mirea/practice/s0000001/1/1/PoloShirt.java @@ -0,0 +1,7 @@ +package ru.mirea.practice.s0000001; + +class PoloShirt extends Shirt { + public PoloShirt(String id, String name, String color, String size) { + super(id, name, color, size); + } +} diff --git a/students/23K9006/23K9006-p13/src/main/java/ru/mirea/practice/s0000001/1/1/Shirt.java b/students/23K9006/23K9006-p13/src/main/java/ru/mirea/practice/s0000001/1/1/Shirt.java new file mode 100644 index 000000000..df62cbfa8 --- /dev/null +++ b/students/23K9006/23K9006-p13/src/main/java/ru/mirea/practice/s0000001/1/1/Shirt.java @@ -0,0 +1,23 @@ +package ru.mirea.practice.s0000001; + +abstract class Shirt { + protected String id; + protected String name; + protected String color; + protected String size; + + public Shirt(String id, String name, String color, String size) { + this.id = id; + this.name = name; + this.color = color; + this.size = size; + } + + @Override + public String toString() { + return "ID: " + id + "\n" + + "Name: " + name + "\n" + + "Color: " + color + "\n" + + "Size: " + size + "\n"; + } +} diff --git a/students/23K9006/23K9006-p13/src/main/java/ru/mirea/practice/s0000001/1/1/TShirt.java b/students/23K9006/23K9006-p13/src/main/java/ru/mirea/practice/s0000001/1/1/TShirt.java new file mode 100644 index 000000000..7b65bf216 --- /dev/null +++ b/students/23K9006/23K9006-p13/src/main/java/ru/mirea/practice/s0000001/1/1/TShirt.java @@ -0,0 +1,7 @@ +package ru.mirea.practice.s0000001; + +class TShirt extends Shirt { + public TShirt(String id, String name, String color, String size) { + super(id, name, color, size); + } +} diff --git a/students/23K9006/23K9006-p14/pom.xml b/students/23K9006/23K9006-p14/pom.xml new file mode 100644 index 000000000..bb985a655 --- /dev/null +++ b/students/23K9006/23K9006-p14/pom.xml @@ -0,0 +1,13 @@ + + + 4.0.0 + + 23K9006 + ru.mirea.practice + 2024.1 + ../pom.xml + + 23K9006-p14 + четырнадцатое задание + diff --git a/students/23K9006/23K9006-p14/src/main/java/ru/mirea/practice/s0000001/1/1/DateFormatValidator.java b/students/23K9006/23K9006-p14/src/main/java/ru/mirea/practice/s0000001/1/1/DateFormatValidator.java new file mode 100644 index 000000000..01726da99 --- /dev/null +++ b/students/23K9006/23K9006-p14/src/main/java/ru/mirea/practice/s0000001/1/1/DateFormatValidator.java @@ -0,0 +1,32 @@ +package ru.mirea.practice.s0000001; + +import java.util.regex.Pattern; + +class DateFormatValidator extends DateValidator { + private static final String PATTERN = + "^(0[1-9]|[12][0-9]|3[01])/(0[1-9]|1[0-2])/" + + "(19\\d\\d|20\\d\\d|21\\d\\d|22\\d\\d|23\\d\\d|24\\d\\d|" + + "25\\d\\d|26\\d\\d|27\\d\\d|28\\d\\d|29\\d\\d|30\\d\\d|" + + "31\\d\\d|32\\d\\d|33\\d\\d|34\\d\\d|35\\d\\d|36\\d\\d|" + + "37\\d\\d|38\\d\\d|39\\d\\d|40\\d\\d|41\\d\\d|42\\d\\d|" + + "43\\d\\d|44\\d\\d|45\\d\\d|46\\d\\d|47\\d\\d|48\\d\\d|" + + "49\\d\\d|50\\d\\d|51\\d\\d|52\\d\\d|53\\d\\d|54\\d\\d|" + + "55\\d\\d|56\\d\\d|57\\d\\d|58\\d\\d|59\\d\\d|60\\d\\d|" + + "61\\d\\d|62\\d\\d|63\\d\\d|64\\d\\d|65\\d\\d|66\\d\\d|" + + "67\\d\\d|68\\d\\d|69\\d\\d|70\\d\\d|71\\d\\d|72\\d\\d|" + + "73\\d\\d|74\\d\\d|75\\d\\d|76\\d\\d|77\\d\\d|78\\d\\d|" + + "79\\d\\d|80\\d\\d|81\\d\\d|82\\d\\d|83\\d\\d|84\\d\\d|" + + "85\\d\\d|86\\d\\d|87\\d\\d|88\\d\\d|89\\d\\d|90\\d\\d|" + + "91\\d\\d|92\\d\\d|93\\d\\d|94\\d\\d|95\\d\\d|96\\d\\d|" + + "97\\d\\d|98\\d\\d|99\\d\\d)$"; + + public DateFormatValidator(String inputDate) { + super(inputDate); + } + + @Override + public boolean isValid() { + Pattern pattern = Pattern.compile(PATTERN); + return pattern.matcher(inputDate).matches(); + } +} diff --git a/students/23K9006/23K9006-p14/src/main/java/ru/mirea/practice/s0000001/1/1/DateValidator.java b/students/23K9006/23K9006-p14/src/main/java/ru/mirea/practice/s0000001/1/1/DateValidator.java new file mode 100644 index 000000000..adc7610fd --- /dev/null +++ b/students/23K9006/23K9006-p14/src/main/java/ru/mirea/practice/s0000001/1/1/DateValidator.java @@ -0,0 +1,11 @@ +package ru.mirea.practice.s0000001; + +abstract class DateValidator { + protected String inputDate; + + public DateValidator(String inputDate) { + this.inputDate = inputDate; + } + + public abstract boolean isValid(); +} diff --git a/students/23K9006/23K9006-p14/src/main/java/ru/mirea/practice/s0000001/1/1/Main1.java b/students/23K9006/23K9006-p14/src/main/java/ru/mirea/practice/s0000001/1/1/Main1.java new file mode 100644 index 000000000..3b04d0ffc --- /dev/null +++ b/students/23K9006/23K9006-p14/src/main/java/ru/mirea/practice/s0000001/1/1/Main1.java @@ -0,0 +1,25 @@ +package ru.mirea.practice.s0000001; + +import java.util.Scanner; + +public final class Main1 { + private Main1() { + } + + public static void main(String[] args) { + try (Scanner scanner = new Scanner(System.in)) { + System.out.println("Введите пароль для проверки:"); + String input = scanner.nextLine(); + + SecurePasswordValidator validator = new SecurePasswordValidator(input); + boolean isValid = validator.isValid(); + + if (isValid) { + System.out.println("Пароль надежен: " + input); + } else { + System.out.println("Пароль ненадежен: " + input); + } + + } + } +} diff --git a/students/23K9006/23K9006-p14/src/main/java/ru/mirea/practice/s0000001/1/1/Main2.java b/students/23K9006/23K9006-p14/src/main/java/ru/mirea/practice/s0000001/1/1/Main2.java new file mode 100644 index 000000000..64a509124 --- /dev/null +++ b/students/23K9006/23K9006-p14/src/main/java/ru/mirea/practice/s0000001/1/1/Main2.java @@ -0,0 +1,25 @@ +package ru.mirea.practice.s0000001; + +import java.util.Scanner; + +public final class Main2 { + private Main2() { + } + + public static void main(String[] args) { + try (Scanner scanner = new Scanner(System.in)) { + System.out.println("Введите дату для проверки (формат dd/mm/yyyy):"); + String input = scanner.nextLine(); + + DateFormatValidator validator = new DateFormatValidator(input); + boolean isValid = validator.isValid(); + + if (isValid) { + System.out.println("Дата корректна: " + input); + } else { + System.out.println("Дата некорректна: " + input); + } + + } + } +} \ No newline at end of file diff --git a/students/23K9006/23K9006-p14/src/main/java/ru/mirea/practice/s0000001/1/1/PasswordValidator.java b/students/23K9006/23K9006-p14/src/main/java/ru/mirea/practice/s0000001/1/1/PasswordValidator.java new file mode 100644 index 000000000..e7eaa6693 --- /dev/null +++ b/students/23K9006/23K9006-p14/src/main/java/ru/mirea/practice/s0000001/1/1/PasswordValidator.java @@ -0,0 +1,11 @@ +package ru.mirea.practice.s0000001; + +abstract class PasswordValidator { + protected String password; + + public PasswordValidator(String password) { + this.password = password; + } + + public abstract boolean isValid(); +} diff --git a/students/23K9006/23K9006-p14/src/main/java/ru/mirea/practice/s0000001/1/1/SecurePasswordValidator.java b/students/23K9006/23K9006-p14/src/main/java/ru/mirea/practice/s0000001/1/1/SecurePasswordValidator.java new file mode 100644 index 000000000..dc82183a5 --- /dev/null +++ b/students/23K9006/23K9006-p14/src/main/java/ru/mirea/practice/s0000001/1/1/SecurePasswordValidator.java @@ -0,0 +1,19 @@ +package ru.mirea.practice.s0000001; + +import java.util.regex.Matcher; +import java.util.regex.Pattern; + +class SecurePasswordValidator extends PasswordValidator { + private static final String PATTERN = "^(?=.*[a-z])(?=.*[A-Z])(?=.*\\d)[A-Za-z\\d_]{8,}$"; + + public SecurePasswordValidator(String password) { + super(password); + } + + @Override + public boolean isValid() { + Pattern pattern = Pattern.compile(PATTERN); + Matcher matcher = pattern.matcher(password); + return matcher.matches(); + } +} diff --git a/students/23K9006/23K9006-p16/pom.xml b/students/23K9006/23K9006-p16/pom.xml new file mode 100644 index 000000000..637f45e99 --- /dev/null +++ b/students/23K9006/23K9006-p16/pom.xml @@ -0,0 +1,13 @@ + + + 4.0.0 + + 23K9006 + ru.mirea.practice + 2024.1 + ../pom.xml + + 23K9006-p16 + шестнадцатое задание + diff --git a/students/23K9006/23K9006-p16/src/main/java/ru/mirea/practice/s0000001/1/1/TextEditorApp.java b/students/23K9006/23K9006-p16/src/main/java/ru/mirea/practice/s0000001/1/1/TextEditorApp.java new file mode 100644 index 000000000..22b2f743b --- /dev/null +++ b/students/23K9006/23K9006-p16/src/main/java/ru/mirea/practice/s0000001/1/1/TextEditorApp.java @@ -0,0 +1,98 @@ +package ru.mirea.practice.s0000001; + +import javax.swing.JFrame; +import javax.swing.JMenu; +import javax.swing.JMenuBar; +import javax.swing.JMenuItem; +import javax.swing.JScrollPane; +import javax.swing.JTextArea; +import javax.swing.SwingUtilities; +import java.awt.BorderLayout; +import java.awt.Color; +import java.awt.Font; +import java.awt.event.ActionEvent; +import java.awt.event.ActionListener; + +public class TextEditorApp { + private JTextArea textArea; + + public TextEditorApp() { + JFrame frame = new JFrame("Text Editor"); + frame.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE); + frame.setSize(500, 400); + + textArea = new JTextArea(); + textArea.setFont(new Font("MS Sans Serif", Font.PLAIN, 14)); + JScrollPane scrollPane = new JScrollPane(textArea); + frame.add(scrollPane, BorderLayout.CENTER); + + JMenuBar menuBar = new JMenuBar(); + + JMenu colorMenu = new JMenu("Цвет"); + String[] colors = {"Синий", "Красный", "Черный"}; + for (String color : colors) { + JMenuItem menuItem = new JMenuItem(color); + menuItem.addActionListener(new ColorActionListener()); + colorMenu.add(menuItem); + } + menuBar.add(colorMenu); + + JMenu fontMenu = new JMenu("Шрифт"); + String[] fonts = {"Times New Roman", "MS Sans Serif", "Courier New"}; + for (String font : fonts) { + JMenuItem menuItem = new JMenuItem(font); + menuItem.addActionListener(new FontActionListener()); + fontMenu.add(menuItem); + } + menuBar.add(fontMenu); + + frame.setJMenuBar(menuBar); + frame.setVisible(true); + } + + private class ColorActionListener implements ActionListener { + @Override + public void actionPerformed(ActionEvent e) { + String selectedColor = e.getActionCommand(); + switch (selectedColor) { + case "Синий": + textArea.setForeground(Color.BLUE); + break; + case "Красный": + textArea.setForeground(Color.RED); + break; + case "Черный": + textArea.setForeground(Color.BLACK); + break; + default: + textArea.setForeground(Color.BLACK); + break; + } + } + } + + private class FontActionListener implements ActionListener { + @Override + public void actionPerformed(ActionEvent e) { + String selectedFont = e.getActionCommand(); + switch (selectedFont) { + case "Times New Roman": + textArea.setFont(new Font("Times New Roman", Font.PLAIN, 14)); + break; + case "MS Sans Serif": + textArea.setFont(new Font("MS Sans Serif", Font.PLAIN, 14)); + break; + case "Courier New": + textArea.setFont(new Font("Courier New", Font.PLAIN, 14)); + break; + default: + textArea.setFont(new Font("MS Sans Serif", Font.PLAIN, 14)); + break; + } + } + } + + public static void main(String[] args) { + SwingUtilities.invokeLater(TextEditorApp::new); + } +} diff --git a/students/23K9006/23K9006-p17/pom.xml b/students/23K9006/23K9006-p17/pom.xml new file mode 100644 index 000000000..a406917e0 --- /dev/null +++ b/students/23K9006/23K9006-p17/pom.xml @@ -0,0 +1,13 @@ + + + 4.0.0 + + 23K9006 + ru.mirea.practice + 2024.1 + ../pom.xml + + 23K9006-p17 + семнадцатое задание + diff --git a/students/23K9006/23K9006-p17/src/main/java/ru/mirea/practice/s0000001/1/1/Main.java b/students/23K9006/23K9006-p17/src/main/java/ru/mirea/practice/s0000001/1/1/Main.java new file mode 100644 index 000000000..b599a0b7f --- /dev/null +++ b/students/23K9006/23K9006-p17/src/main/java/ru/mirea/practice/s0000001/1/1/Main.java @@ -0,0 +1,61 @@ +package ru.mirea.practice.s0000001; + +import java.util.Scanner; + +public final class Main { + + private Main() { + } + + public static void main(String[] args) { + StudentList studentList = new StudentList(); + Scanner scanner = new Scanner(System.in); + int choice; + + try { + do { + System.out.println("\nМеню:"); + System.out.println("1. Добавить студента"); + System.out.println("2. Удалить студента"); + System.out.println("3. Показать всех студентов"); + System.out.println("4. Очистить список студентов"); + System.out.println("5. Проверить, пуст ли список"); + System.out.println("6. Выход"); + System.out.print("Выберите действие: "); + choice = scanner.nextInt(); + scanner.nextLine(); + + switch (choice) { + case 1: + Student student = new Student(); + student.readAttributes(); + studentList.addStudent(student); + break; + case 2: + System.out.print("Введите имя студента для удаления: "); + String nameToRemove = scanner.nextLine(); + studentList.removeStudent(nameToRemove); + break; + case 3: + studentList.displayStudents(); + break; + case 4: + studentList.clear(); + System.out.println("Список студентов очищен."); + break; + case 5: + System.out.println("Список пуст: " + studentList.isEmpty()); + break; + case 6: + System.out.println("Выход из программы."); + break; + default: + System.out.println("Неверный выбор. Попробуйте снова."); + break; + } + } while (choice != 6); + } finally { + scanner.close(); + } + } +} diff --git a/students/23K9006/23K9006-p17/src/main/java/ru/mirea/practice/s0000001/1/1/Student.java b/students/23K9006/23K9006-p17/src/main/java/ru/mirea/practice/s0000001/1/1/Student.java new file mode 100644 index 000000000..7f22d876d --- /dev/null +++ b/students/23K9006/23K9006-p17/src/main/java/ru/mirea/practice/s0000001/1/1/Student.java @@ -0,0 +1,32 @@ +package ru.mirea.practice.s0000001; + +import java.util.Scanner; + +class Student { + + private String name; + private int age; + Student prev; + Student next; + + public void readAttributes() { + Scanner scanner = new Scanner(System.in); + try { + System.out.print("Введите имя студента: "); + this.name = scanner.nextLine(); + System.out.print("Введите возраст студента: "); + this.age = scanner.nextInt(); + scanner.nextLine(); + } finally { + scanner.close(); + } + } + + public void displayAttributes() { + System.out.println("Имя: " + name + ", Возраст: " + age); + } + + public String getName() { + return name; + } +} diff --git a/students/23K9006/23K9006-p17/src/main/java/ru/mirea/practice/s0000001/1/1/StudentList.java b/students/23K9006/23K9006-p17/src/main/java/ru/mirea/practice/s0000001/1/1/StudentList.java new file mode 100644 index 000000000..f729f4ce4 --- /dev/null +++ b/students/23K9006/23K9006-p17/src/main/java/ru/mirea/practice/s0000001/1/1/StudentList.java @@ -0,0 +1,64 @@ +package ru.mirea.practice.s0000001; + +class StudentList { + + private Student head; + private Student tail; + + public StudentList() { + head = null; + tail = null; + } + + public void addStudent(Student student) { + if (head == null) { + head = student; + tail = student; + } else { + tail.next = student; + student.prev = tail; + tail = student; + } + } + + public void removeStudent(String name) { + Student current = head; + while (current != null) { + if (current.getName().equals(name)) { + if (current.prev != null) { + current.prev.next = current.next; + } else { + head = current.next; + } + if (current.next != null) { + current.next.prev = current.prev; + } else { + tail = current.prev; + } + return; + } + current = current.next; + } + } + + public void displayStudents() { + if (isEmpty()) { + System.out.println("Список студентов пуст."); + } else { + Student current = head; + while (current != null) { + current.displayAttributes(); + current = current.next; + } + } + } + + public void clear() { + head = null; + tail = null; + } + + public boolean isEmpty() { + return head == null; + } +} diff --git a/students/23K9006/23K9006-p19/pom.xml b/students/23K9006/23K9006-p19/pom.xml new file mode 100644 index 000000000..f9cbdc1bf --- /dev/null +++ b/students/23K9006/23K9006-p19/pom.xml @@ -0,0 +1,13 @@ + + + 4.0.0 + + 23K9006 + ru.mirea.practice + 2024.1 + ../pom.xml + + 23K9006-p19 + девятнадцатое задание + diff --git a/students/23K9006/23K9006-p19/src/main/java/ru/mirea/practice/s0000001/1/1/InvalidTaxIdException.java b/students/23K9006/23K9006-p19/src/main/java/ru/mirea/practice/s0000001/1/1/InvalidTaxIdException.java new file mode 100644 index 000000000..6688ffdf1 --- /dev/null +++ b/students/23K9006/23K9006-p19/src/main/java/ru/mirea/practice/s0000001/1/1/InvalidTaxIdException.java @@ -0,0 +1,7 @@ +package ru.mirea.practice.s0000001; + +public class InvalidTaxIdException extends Exception { + public InvalidTaxIdException(String message) { + super(message); + } +} diff --git a/students/23K9006/23K9006-p19/src/main/java/ru/mirea/practice/s0000001/1/1/OnlineUser.java b/students/23K9006/23K9006-p19/src/main/java/ru/mirea/practice/s0000001/1/1/OnlineUser.java new file mode 100644 index 000000000..384f4ee97 --- /dev/null +++ b/students/23K9006/23K9006-p19/src/main/java/ru/mirea/practice/s0000001/1/1/OnlineUser.java @@ -0,0 +1,15 @@ +package ru.mirea.practice.s0000001; + +public class OnlineUser extends User { + + public OnlineUser(String name, String taxId) { + super(name, taxId); + } + + @Override + public void checkTaxId() throws InvalidTaxIdException { + if (taxId == null || !taxId.matches("\\d{10}") && !taxId.matches("\\d{12}")) { + throw new InvalidTaxIdException("Недействительный ИНН: " + taxId); + } + } +} diff --git a/students/23K9006/23K9006-p19/src/main/java/ru/mirea/practice/s0000001/1/1/PurchaseProcess.java b/students/23K9006/23K9006-p19/src/main/java/ru/mirea/practice/s0000001/1/1/PurchaseProcess.java new file mode 100644 index 000000000..c0b7ed43c --- /dev/null +++ b/students/23K9006/23K9006-p19/src/main/java/ru/mirea/practice/s0000001/1/1/PurchaseProcess.java @@ -0,0 +1,29 @@ +package ru.mirea.practice.s0000001; + +import java.util.Scanner; + +public final class PurchaseProcess { + + private PurchaseProcess() { + + } + + public static void main(String[] args) { + try (Scanner inputScanner = new Scanner(System.in)) { + System.out.print("Введите полное имя пользователя: "); + String userName = inputScanner.nextLine(); + + System.out.print("Введите номер ИНН пользователя: "); + String userTaxId = inputScanner.nextLine(); + + OnlineUser onlineUser = new OnlineUser(userName, userTaxId); + + try { + onlineUser.checkTaxId(); + System.out.println("Покупка успешно оформлена для пользователя: " + userName); + } catch (InvalidTaxIdException e) { + System.out.println(e.getMessage()); + } + } + } +} diff --git a/students/23K9006/23K9006-p19/src/main/java/ru/mirea/practice/s0000001/1/1/User.java b/students/23K9006/23K9006-p19/src/main/java/ru/mirea/practice/s0000001/1/1/User.java new file mode 100644 index 000000000..da0976196 --- /dev/null +++ b/students/23K9006/23K9006-p19/src/main/java/ru/mirea/practice/s0000001/1/1/User.java @@ -0,0 +1,13 @@ +package ru.mirea.practice.s0000001; + +public abstract class User { + protected String name; + protected String taxId; + + public User(String name, String taxId) { + this.name = name; + this.taxId = taxId; + } + + public abstract void checkTaxId() throws InvalidTaxIdException; +} diff --git a/students/23K9006/23K9006-p20/pom.xml b/students/23K9006/23K9006-p20/pom.xml new file mode 100644 index 000000000..0b00cdffd --- /dev/null +++ b/students/23K9006/23K9006-p20/pom.xml @@ -0,0 +1,13 @@ + + + 4.0.0 + + 23K9006 + ru.mirea.practice + 2024.1 + ../pom.xml + + 23K9006-p20 + двадцатое задание + diff --git a/students/23K9006/23K9006-p20/src/main/java/ru/mirea/practice/s0000001/1/1/Calculator.java b/students/23K9006/23K9006-p20/src/main/java/ru/mirea/practice/s0000001/1/1/Calculator.java new file mode 100644 index 000000000..841d0017a --- /dev/null +++ b/students/23K9006/23K9006-p20/src/main/java/ru/mirea/practice/s0000001/1/1/Calculator.java @@ -0,0 +1,27 @@ +package ru.mirea.practice.s0000001; + +public final class Calculator { + + private Calculator() { + // Private constructor to prevent instantiation + } + + public static double sum(T a, V b) { + return a.doubleValue() + b.doubleValue(); + } + + public static double subtraction(T a, V b) { + return a.doubleValue() - b.doubleValue(); + } + + public static double multiply(T a, V b) { + return a.doubleValue() * b.doubleValue(); + } + + public static double divide(T a, V b) { + if (b.doubleValue() == 0) { + throw new ArithmeticException("Cannot divide by zero."); + } + return a.doubleValue() / b.doubleValue(); + } +} diff --git a/students/23K9006/23K9006-p20/src/main/java/ru/mirea/practice/s0000001/1/1/GenericClass.java b/students/23K9006/23K9006-p20/src/main/java/ru/mirea/practice/s0000001/1/1/GenericClass.java new file mode 100644 index 000000000..ce4932e68 --- /dev/null +++ b/students/23K9006/23K9006-p20/src/main/java/ru/mirea/practice/s0000001/1/1/GenericClass.java @@ -0,0 +1,31 @@ +package ru.mirea.practice.s0000001; + +abstract class GenericClass { + protected T firstValue; + protected V secondValue; + protected K thirdValue; + + public GenericClass(T firstValue, V secondValue, K thirdValue) { + this.firstValue = firstValue; + this.secondValue = secondValue; + this.thirdValue = thirdValue; + } + + public T getFirstValue() { + return firstValue; + } + + public V getSecondValue() { + return secondValue; + } + + public K getThirdValue() { + return thirdValue; + } + + public void displayClassNames() { + System.out.println("Тип первого значения: " + firstValue.getClass().getName()); + System.out.println("Тип второго значения: " + secondValue.getClass().getName()); + System.out.println("Тип третьего значения: " + thirdValue.getClass().getName()); + } +} diff --git a/students/23K9006/23K9006-p20/src/main/java/ru/mirea/practice/s0000001/1/1/IntegerMinMax.java b/students/23K9006/23K9006-p20/src/main/java/ru/mirea/practice/s0000001/1/1/IntegerMinMax.java new file mode 100644 index 000000000..9ffae2241 --- /dev/null +++ b/students/23K9006/23K9006-p20/src/main/java/ru/mirea/practice/s0000001/1/1/IntegerMinMax.java @@ -0,0 +1,7 @@ +package ru.mirea.practice.s0000001; + +class IntegerMinMax extends MinMax { + public IntegerMinMax(Integer[] array) { + super(array); + } +} diff --git a/students/23K9006/23K9006-p20/src/main/java/ru/mirea/practice/s0000001/1/1/Main.java b/students/23K9006/23K9006-p20/src/main/java/ru/mirea/practice/s0000001/1/1/Main.java new file mode 100644 index 000000000..d0ebc0537 --- /dev/null +++ b/students/23K9006/23K9006-p20/src/main/java/ru/mirea/practice/s0000001/1/1/Main.java @@ -0,0 +1,25 @@ +package ru.mirea.practice.s0000001; + +public final class Main { + + private Main() { + // Private constructor to prevent instantiation + } + + public static void main(String[] args) { + Integer[] intArray = {5, 3, 8, 1, 4}; + IntegerMinMax intMinMax = new IntegerMinMax(intArray); + System.out.println("Minimum: " + intMinMax.getMin()); + System.out.println("Maximum: " + intMinMax.getMax()); + + String[] strArray = {"apple", "banana", "kiwi", "orange"}; + StringMinMax strMinMax = new StringMinMax(strArray); + System.out.println("Minimum: " + strMinMax.getMin()); + System.out.println("Maximum: " + strMinMax.getMax()); + + System.out.println("Sum: " + Calculator.sum(5, 10.5)); + System.out.println("Subtraction: " + Calculator.subtraction(10.5, 5)); + System.out.println("Multiplication: " + Calculator.multiply(3, 4.5)); + System.out.println("Division: " + Calculator.divide(10, 2)); + } +} diff --git a/students/23K9006/23K9006-p20/src/main/java/ru/mirea/practice/s0000001/1/1/Main1.java b/students/23K9006/23K9006-p20/src/main/java/ru/mirea/practice/s0000001/1/1/Main1.java new file mode 100644 index 000000000..d60035299 --- /dev/null +++ b/students/23K9006/23K9006-p20/src/main/java/ru/mirea/practice/s0000001/1/1/Main1.java @@ -0,0 +1,12 @@ +package ru.mirea.practice.s0000001; + +public final class Main1 { + + private Main1() { + // Private constructor to prevent instantiation + } + + public static void main(String[] args) { + System.out.println("Hello, World!"); + } +} diff --git a/students/23K9006/23K9006-p20/src/main/java/ru/mirea/practice/s0000001/1/1/MinMax.java b/students/23K9006/23K9006-p20/src/main/java/ru/mirea/practice/s0000001/1/1/MinMax.java new file mode 100644 index 000000000..a84e378a6 --- /dev/null +++ b/students/23K9006/23K9006-p20/src/main/java/ru/mirea/practice/s0000001/1/1/MinMax.java @@ -0,0 +1,29 @@ +package ru.mirea.practice.s0000001; + +abstract class MinMax> { + protected T[] array; + + public MinMax(T[] array) { + this.array = array; + } + + public T getMin() { + T min = array[0]; + for (T element : array) { + if (element.compareTo(min) < 0) { + min = element; + } + } + return min; + } + + public T getMax() { + T max = array[0]; + for (T element : array) { + if (element.compareTo(max) > 0) { + max = element; + } + } + return max; + } +} diff --git a/students/23K9006/23K9006-p20/src/main/java/ru/mirea/practice/s0000001/1/1/MyGenericClass.java b/students/23K9006/23K9006-p20/src/main/java/ru/mirea/practice/s0000001/1/1/MyGenericClass.java new file mode 100644 index 000000000..7f12435f8 --- /dev/null +++ b/students/23K9006/23K9006-p20/src/main/java/ru/mirea/practice/s0000001/1/1/MyGenericClass.java @@ -0,0 +1,7 @@ +package ru.mirea.practice.s0000001; + +class MyGenericClass extends GenericClass { + public MyGenericClass(String firstValue, Integer secondValue, Double thirdValue) { + super(firstValue, secondValue, thirdValue); + } +} diff --git a/students/23K9006/23K9006-p20/src/main/java/ru/mirea/practice/s0000001/1/1/StringMinMax.java b/students/23K9006/23K9006-p20/src/main/java/ru/mirea/practice/s0000001/1/1/StringMinMax.java new file mode 100644 index 000000000..919b657f8 --- /dev/null +++ b/students/23K9006/23K9006-p20/src/main/java/ru/mirea/practice/s0000001/1/1/StringMinMax.java @@ -0,0 +1,7 @@ +package ru.mirea.practice.s0000001; + +class StringMinMax extends MinMax { + public StringMinMax(String[] array) { + super(array); + } +} diff --git a/students/23K9006/23K9006-p21/pom.xml b/students/23K9006/23K9006-p21/pom.xml new file mode 100644 index 000000000..35ff78ba0 --- /dev/null +++ b/students/23K9006/23K9006-p21/pom.xml @@ -0,0 +1,13 @@ + + + 4.0.0 + + 23K9006 + ru.mirea.practice + 2024.1 + ../pom.xml + + 23K9006-p21 + двадцать первое задание + diff --git a/students/23K9006/23K9006-p21/src/main/java/ru/mirea/practice/s0000001/1/GenericArray.java b/students/23K9006/23K9006-p21/src/main/java/ru/mirea/practice/s0000001/1/GenericArray.java new file mode 100644 index 000000000..8f223bde6 --- /dev/null +++ b/students/23K9006/23K9006-p21/src/main/java/ru/mirea/practice/s0000001/1/GenericArray.java @@ -0,0 +1,29 @@ +package ru.mirea.practice.s0000001; + +//второй main + +public class GenericArray { + private T[] array; + + public GenericArray(T[] array) { + this.array = array; + } + + public T get(int index) { + if (index < 0 || index >= array.length) { + throw new IndexOutOfBoundsException("Invalid index: " + index); + } + return array[index]; + } + + public void set(int index, T value) { + if (index < 0 || index >= array.length) { + throw new IndexOutOfBoundsException("Invalid index: " + index); + } + array[index] = value; + } + + public int size() { + return array.length; + } +} diff --git a/students/23K9006/23K9006-p21/src/main/java/ru/mirea/practice/s0000001/1/Main1.java b/students/23K9006/23K9006-p21/src/main/java/ru/mirea/practice/s0000001/1/Main1.java new file mode 100644 index 000000000..bd78f1429 --- /dev/null +++ b/students/23K9006/23K9006-p21/src/main/java/ru/mirea/practice/s0000001/1/Main1.java @@ -0,0 +1,21 @@ +package ru.mirea.practice.s0000001; + +import java.util.Arrays; +import java.util.List; + +abstract class Main1 { + public static List convertArrayToList(T[] array) { + return Arrays.asList(array); + } + + public static void main(String[] args) { + String[] stringArray = {"one", "two", "three"}; + Integer[] intArray = {1, 2, 3}; + + List stringList = convertArrayToList(stringArray); + List intList = convertArrayToList(intArray); + + System.out.println(stringList); + System.out.println(intList); + } +} diff --git a/students/23K9006/23K9006-p21/src/main/java/ru/mirea/practice/s0000001/1/Main2.java b/students/23K9006/23K9006-p21/src/main/java/ru/mirea/practice/s0000001/1/Main2.java new file mode 100644 index 000000000..5355b2d0a --- /dev/null +++ b/students/23K9006/23K9006-p21/src/main/java/ru/mirea/practice/s0000001/1/Main2.java @@ -0,0 +1,21 @@ +package ru.mirea.practice.s0000001; + +abstract class Main2 { + public static void main(String[] args) { + Integer[] intArray = {1, 2, 3, 4, 5}; + GenericArray genericIntArray = new GenericArray<>(intArray); + + System.out.println("Элемент по индексу 2: " + genericIntArray.get(2)); + genericIntArray.set(2, 10); + System.out.println("Обновленный элемент по индексу 2: " + genericIntArray.get(2)); + System.out.println("Размер массива: " + genericIntArray.size()); + + String[] stringArray = {"A", "B", "C"}; + GenericArray genericStringArray = new GenericArray<>(stringArray); + + System.out.println("Элемент по индексу 0: " + genericStringArray.get(0)); + genericStringArray.set(0, "Z"); + System.out.println("Обновленный элемент по индексу 0: " + genericStringArray.get(0)); + System.out.println("Размер массива: " + genericStringArray.size()); + } +} diff --git a/students/23K9006/23K9006-p22/pom.xml b/students/23K9006/23K9006-p22/pom.xml new file mode 100644 index 000000000..d7e0bf479 --- /dev/null +++ b/students/23K9006/23K9006-p22/pom.xml @@ -0,0 +1,13 @@ + + + 4.0.0 + + 23K9006 + ru.mirea.practice + 2024.1 + ../pom.xml + + 23K9006-p22 + двадцать второе задание + diff --git a/students/23K9006/23K9006-p22/src/main/java/ru/mirea/practice/s0000001/1/Main1.java b/students/23K9006/23K9006-p22/src/main/java/ru/mirea/practice/s0000001/1/Main1.java new file mode 100644 index 000000000..e1d394dbb --- /dev/null +++ b/students/23K9006/23K9006-p22/src/main/java/ru/mirea/practice/s0000001/1/Main1.java @@ -0,0 +1,9 @@ +package ru.mirea.practice.s0000001; + +abstract class Main1 { + public static void main(String[] args) { + String rpnExpression = "3 4 + 2 * 7 /"; + double result = RPnCalculator.calculate(rpnExpression); + System.out.println("Результат: " + result); + } +} diff --git a/students/23K9006/23K9006-p22/src/main/java/ru/mirea/practice/s0000001/1/RPnCalculator.java b/students/23K9006/23K9006-p22/src/main/java/ru/mirea/practice/s0000001/1/RPnCalculator.java new file mode 100644 index 000000000..ab93aa9f2 --- /dev/null +++ b/students/23K9006/23K9006-p22/src/main/java/ru/mirea/practice/s0000001/1/RPnCalculator.java @@ -0,0 +1,44 @@ +package ru.mirea.practice.s0000001; + +import java.util.Stack; + +abstract class RPnCalculator { + public static double calculate(String expression) { + Stack stack = new Stack<>(); + String[] tokens = expression.split("\\s+"); + + for (String token : tokens) { + if (isOperator(token)) { + double b = stack.pop(); + double a = stack.pop(); + stack.push(applyOperation(a, b, token)); + } else { + stack.push(Double.parseDouble(token)); + } + } + + return stack.pop(); + } + + private static boolean isOperator(String token) { + return "+".equals(token) || "-".equals(token) || "*".equals(token) || "/".equals(token); + } + + private static double applyOperation(double a, double b, String operator) { + switch (operator) { + case "+": + return a + b; + case "-": + return a - b; + case "*": + return a * b; + case "/": + if (b == 0) { + throw new ArithmeticException("Деление на ноль"); + } + return a / b; + default: + throw new IllegalArgumentException("Недопустимый оператор: " + operator); + } + } +} diff --git a/students/23K9006/23K9006-p23/pom.xml b/students/23K9006/23K9006-p23/pom.xml new file mode 100644 index 000000000..4bba3a87b --- /dev/null +++ b/students/23K9006/23K9006-p23/pom.xml @@ -0,0 +1,13 @@ + + + 4.0.0 + + 23K9006 + ru.mirea.practice + 2024.1 + ../pom.xml + + 23K9006-p23 + двадцать третье задание + diff --git a/students/23K9006/23K9006-p23/src/main/java/ru/mirea/practice/s0000001/1/ArrayQueue.java b/students/23K9006/23K9006-p23/src/main/java/ru/mirea/practice/s0000001/1/ArrayQueue.java new file mode 100644 index 000000000..027dfa4c3 --- /dev/null +++ b/students/23K9006/23K9006-p23/src/main/java/ru/mirea/practice/s0000001/1/ArrayQueue.java @@ -0,0 +1,60 @@ +package ru.mirea.practice.s0000001; + +public class ArrayQueue { + private Object[] elements = new Object[10]; + private int head = 0; + private int tail = 0; + private int size = 0; + + public void enqueue(Object element) { + ensureCapacity(size + 1); + elements[tail] = element; + tail = (tail + 1) % elements.length; + size++; + } + + public Object element() { + if (isEmpty()) { + throw new IllegalStateException("Queue is empty"); + } + return elements[head]; + } + + public Object dequeue() { + if (isEmpty()) { + throw new IllegalStateException("Queue is empty"); + } + final Object result = elements[head]; + elements[head] = null; + head = (head + 1) % elements.length; + size--; + return result; + } + + public int size() { + return size; + } + + public boolean isEmpty() { + return size == 0; + } + + public void clear() { + elements = new Object[10]; + head = 0; + tail = 0; + size = 0; + } + + private void ensureCapacity(int capacity) { + if (capacity > elements.length) { + Object[] newArray = new Object[2 * elements.length]; + for (int i = 0; i < size; i++) { + newArray[i] = elements[(head + i) % elements.length]; + } + elements = newArray; + head = 0; + tail = size; + } + } +} diff --git a/students/23K9006/23K9006-p23/src/main/java/ru/mirea/practice/s0000001/1/ArrayQueueAdt.java b/students/23K9006/23K9006-p23/src/main/java/ru/mirea/practice/s0000001/1/ArrayQueueAdt.java new file mode 100644 index 000000000..70237c8d5 --- /dev/null +++ b/students/23K9006/23K9006-p23/src/main/java/ru/mirea/practice/s0000001/1/ArrayQueueAdt.java @@ -0,0 +1,60 @@ +package ru.mirea.practice.s0000001; + +public class ArrayQueueAdt { + private Object[] elements = new Object[10]; + private int head = 0; + private int tail = 0; + private int size = 0; + + public static void enqueue(ArrayQueueAdt queue, Object element) { + ensureCapacity(queue, queue.size + 1); + queue.elements[queue.tail] = element; + queue.tail = (queue.tail + 1) % queue.elements.length; + queue.size++; + } + + public static Object element(ArrayQueueAdt queue) { + if (isEmpty(queue)) { + throw new IllegalStateException("Queue is empty"); + } + return queue.elements[queue.head]; + } + + public static Object dequeue(ArrayQueueAdt queue) { + if (isEmpty(queue)) { + throw new IllegalStateException("Queue is empty"); + } + final Object result = queue.elements[queue.head]; + queue.elements[queue.head] = null; + queue.head = (queue.head + 1) % queue.elements.length; + queue.size--; + return result; + } + + public static int size(ArrayQueueAdt queue) { + return queue.size; + } + + public static boolean isEmpty(ArrayQueueAdt queue) { + return queue.size == 0; + } + + public static void clear(ArrayQueueAdt queue) { + queue.elements = new Object[10]; + queue.head = 0; + queue.tail = 0; + queue.size = 0; + } + + private static void ensureCapacity(ArrayQueueAdt queue, int capacity) { + if (capacity > queue.elements.length) { + Object[] newArray = new Object[2 * queue.elements.length]; + for (int i = 0; i < queue.size; i++) { + newArray[i] = queue.elements[(queue.head + i) % queue.elements.length]; + } + queue.elements = newArray; + queue.head = 0; + queue.tail = queue.size; + } + } +} diff --git a/students/23K9006/23K9006-p23/src/main/java/ru/mirea/practice/s0000001/1/ArrayQueueModule.java b/students/23K9006/23K9006-p23/src/main/java/ru/mirea/practice/s0000001/1/ArrayQueueModule.java new file mode 100644 index 000000000..5c84fd3bf --- /dev/null +++ b/students/23K9006/23K9006-p23/src/main/java/ru/mirea/practice/s0000001/1/ArrayQueueModule.java @@ -0,0 +1,60 @@ +package ru.mirea.practice.s0000001; + +abstract class ArrayQueueModule { + private static Object[] elements = new Object[10]; + private static int head = 0; + private static int tail = 0; + private static int size = 0; + + public static void enqueue(Object element) { + ensureCapacity(size + 1); + elements[tail] = element; + tail = (tail + 1) % elements.length; + size++; + } + + public static Object element() { + if (isEmpty()) { + throw new IllegalStateException("Queue is empty"); + } + return elements[head]; + } + + public static Object dequeue() { + if (isEmpty()) { + throw new IllegalStateException("Queue is empty"); + } + final Object result = elements[head]; + elements[head] = null; + head = (head + 1) % elements.length; + size--; + return result; + } + + public static int size() { + return size; + } + + public static boolean isEmpty() { + return size == 0; + } + + public static void clear() { + elements = new Object[10]; + head = 0; + tail = 0; + size = 0; + } + + private static void ensureCapacity(int capacity) { + if (capacity > elements.length) { + Object[] newArray = new Object[2 * elements.length]; + for (int i = 0; i < size; i++) { + newArray[i] = elements[(head + i) % elements.length]; + } + elements = newArray; + head = 0; + tail = size; + } + } +} diff --git a/students/23K9006/23K9006-p23/src/main/java/ru/mirea/practice/s0000001/1/Main.java b/students/23K9006/23K9006-p23/src/main/java/ru/mirea/practice/s0000001/1/Main.java new file mode 100644 index 000000000..4bb6f9d33 --- /dev/null +++ b/students/23K9006/23K9006-p23/src/main/java/ru/mirea/practice/s0000001/1/Main.java @@ -0,0 +1,25 @@ +package ru.mirea.practice.s0000001; + +abstract class Main { + public static void main(String[] args) { + // ArrayQueueModule + ArrayQueueModule.enqueue(10); + ArrayQueueModule.enqueue(20); + System.out.println(ArrayQueueModule.dequeue()); + System.out.println(ArrayQueueModule.size()); + + // ArrayQueueADT + ArrayQueueAdt adtQueue = new ArrayQueueAdt(); + ArrayQueueAdt.enqueue(adtQueue, 10); + ArrayQueueAdt.enqueue(adtQueue, 20); + System.out.println(ArrayQueueAdt.dequeue(adtQueue)); + System.out.println(ArrayQueueAdt.size(adtQueue)); + + // ArrayQueue + ArrayQueue queue = new ArrayQueue(); + queue.enqueue(10); + queue.enqueue(20); + System.out.println(queue.dequeue()); + System.out.println(queue.size()); + } +} diff --git a/students/23K9006/23K9006-p24/pom.xml b/students/23K9006/23K9006-p24/pom.xml new file mode 100644 index 000000000..cdb26a8f2 --- /dev/null +++ b/students/23K9006/23K9006-p24/pom.xml @@ -0,0 +1,13 @@ + + + 4.0.0 + + 23K9006 + ru.mirea.practice + 2024.1 + ../pom.xml + + 23K9006-p24 + двадцать четвертое задание + diff --git a/students/23K9006/23K9006-p24/src/main/java/ru/mirea/practice/s0000001/1/Complex.java b/students/23K9006/23K9006-p24/src/main/java/ru/mirea/practice/s0000001/1/Complex.java new file mode 100644 index 000000000..c5445accd --- /dev/null +++ b/students/23K9006/23K9006-p24/src/main/java/ru/mirea/practice/s0000001/1/Complex.java @@ -0,0 +1,24 @@ +package ru.mirea.practice.s0000001; + +public class Complex { + private final int real; + private final int image; + + public Complex(int real, int image) { + this.real = real; + this.image = image; + } + + public int getReal() { + return real; + } + + public int getImage() { + return image; + } + + @Override + public String toString() { + return real + " + " + image + "i"; + } +} diff --git a/students/23K9006/23K9006-p24/src/main/java/ru/mirea/practice/s0000001/1/ComplexAbstractFactory.java b/students/23K9006/23K9006-p24/src/main/java/ru/mirea/practice/s0000001/1/ComplexAbstractFactory.java new file mode 100644 index 000000000..8f81f98cc --- /dev/null +++ b/students/23K9006/23K9006-p24/src/main/java/ru/mirea/practice/s0000001/1/ComplexAbstractFactory.java @@ -0,0 +1,8 @@ +package ru.mirea.practice.s0000001; + +public interface ComplexAbstractFactory { + + Complex createComplex(); + + Complex createComplex(int real, int image); +} diff --git a/students/23K9006/23K9006-p24/src/main/java/ru/mirea/practice/s0000001/1/ConcreteFactory.java b/students/23K9006/23K9006-p24/src/main/java/ru/mirea/practice/s0000001/1/ConcreteFactory.java new file mode 100644 index 000000000..ac9eb721e --- /dev/null +++ b/students/23K9006/23K9006-p24/src/main/java/ru/mirea/practice/s0000001/1/ConcreteFactory.java @@ -0,0 +1,13 @@ +package ru.mirea.practice.s0000001; + +public class ConcreteFactory implements ComplexAbstractFactory { + @Override + public Complex createComplex() { + return new Complex(0, 0); + } + + @Override + public Complex createComplex(int real, int image) { + return new Complex(real, image); + } +} diff --git a/students/23K9006/23K9006-p24/src/main/java/ru/mirea/practice/s0000001/1/Main.java b/students/23K9006/23K9006-p24/src/main/java/ru/mirea/practice/s0000001/1/Main.java new file mode 100644 index 000000000..3de59d94f --- /dev/null +++ b/students/23K9006/23K9006-p24/src/main/java/ru/mirea/practice/s0000001/1/Main.java @@ -0,0 +1,13 @@ +package ru.mirea.practice.s0000001; + +abstract class Main { + public static void main(String[] args) { + ComplexAbstractFactory factory = new ConcreteFactory(); + + Complex defaultComplex = factory.createComplex(); + System.out.println("Default complex number: " + defaultComplex); + + Complex customComplex = factory.createComplex(5, 10); + System.out.println("Custom complex number: " + customComplex); + } +} diff --git a/students/23K9006/23K9006-p25/pom.xml b/students/23K9006/23K9006-p25/pom.xml new file mode 100644 index 000000000..d8abc7357 --- /dev/null +++ b/students/23K9006/23K9006-p25/pom.xml @@ -0,0 +1,13 @@ + + + 4.0.0 + + 23K9006 + ru.mirea.practice + 2024.1 + ../pom.xml + + 23K9006-p25 + двадцать пятое задание + diff --git a/students/23K9006/23K9006-p25/src/main/java/ru/mirea/practice/s0000001/1/StringManipulator.java b/students/23K9006/23K9006-p25/src/main/java/ru/mirea/practice/s0000001/1/StringManipulator.java new file mode 100644 index 000000000..6a78208e6 --- /dev/null +++ b/students/23K9006/23K9006-p25/src/main/java/ru/mirea/practice/s0000001/1/StringManipulator.java @@ -0,0 +1,39 @@ +package ru.mirea.practice.s0000001; + +import java.util.Scanner; +import java.util.regex.Matcher; +import java.util.regex.Pattern; + +abstract class StringManipulator { + public static void main(String[] args) { + try (Scanner scanner = new Scanner(System.in)) { + System.out.println("Введите строку для манипуляции:"); + String input = scanner.nextLine(); + + System.out.println("Введите регулярное выражение для разбиения строки:"); + String regex = scanner.nextLine(); + + System.out.println("Результаты разбиения строки:"); + String[] splitResult = input.split(regex); + for (int i = 0; i < splitResult.length; i++) { + System.out.println((i + 1) + ": " + splitResult[i]); + } + + System.out.println("\nВведите регулярное выражение для поиска в строке:"); + regex = scanner.nextLine(); + Pattern pattern = Pattern.compile(regex); + Matcher matcher = pattern.matcher(input); + + System.out.println("Результаты поиска в строке:"); + boolean found = false; + while (matcher.find()) { + System.out.println("Найдено: " + matcher.group() + " (начало: " + matcher.start() + ", конец: " + matcher.end() + ")"); + found = true; + } + + if (!found) { + System.out.println("Совпадений не найдено."); + } + } + } +} diff --git a/students/23K9006/23K9006-p26/pom.xml b/students/23K9006/23K9006-p26/pom.xml new file mode 100644 index 000000000..6ebf7dfbc --- /dev/null +++ b/students/23K9006/23K9006-p26/pom.xml @@ -0,0 +1,13 @@ + + + 4.0.0 + + 23K9006 + ru.mirea.practice + 2024.1 + ../pom.xml + + 23K9006-p26 + двадцать шестое задание + diff --git a/students/23K9006/23K9006-p26/src/main/java/ru/mirea/practice/s0000001/1/ArrayInverter.java b/students/23K9006/23K9006-p26/src/main/java/ru/mirea/practice/s0000001/1/ArrayInverter.java new file mode 100644 index 000000000..f4c0da3a3 --- /dev/null +++ b/students/23K9006/23K9006-p26/src/main/java/ru/mirea/practice/s0000001/1/ArrayInverter.java @@ -0,0 +1,28 @@ +package ru.mirea.practice.s0000001; + +import java.util.Stack; + +abstract class ArrayInverter { + public static void invertArray(int[] array) { + Stack stack = new Stack<>(); + for (int num : array) { + stack.push(num); + } + for (int i = 0; i < array.length; i++) { + array[i] = stack.pop(); + } + } + + public static void main(String[] args) { + int[] array = {1, 2, 3, 4, 5}; + System.out.println("Исходный массив:"); + for (int num : array) { + System.out.print(num + " "); + } + invertArray(array); + System.out.println("\nИнвертированный массив:"); + for (int num : array) { + System.out.print(num + " "); + } + } +} diff --git a/students/23K9006/23K9006-p27/pom.xml b/students/23K9006/23K9006-p27/pom.xml new file mode 100644 index 000000000..daad6b28c --- /dev/null +++ b/students/23K9006/23K9006-p27/pom.xml @@ -0,0 +1,13 @@ + + + 4.0.0 + + 23K9006 + ru.mirea.practice + 2024.1 + ../pom.xml + + 23K9006-p27 + двадцать седьмое задание + diff --git a/students/23K9006/23K9006-p27/src/main/java/ru/mirea/practice/s0000001/1/HashTable.java b/students/23K9006/23K9006-p27/src/main/java/ru/mirea/practice/s0000001/1/HashTable.java new file mode 100644 index 000000000..3ec4dcc80 --- /dev/null +++ b/students/23K9006/23K9006-p27/src/main/java/ru/mirea/practice/s0000001/1/HashTable.java @@ -0,0 +1,73 @@ +package ru.mirea.practice.s0000001; + +import java.util.LinkedList; + +public class HashTable { + private static final int TABLE_SIZE = 256; + private final LinkedList[] table; + + public HashTable() { + table = new LinkedList[TABLE_SIZE]; + hashtabInit(); + } + + private static class Entry { + final String key; + final String value; + + Entry(String key, String value) { + this.key = key; + this.value = value; + } + } + + private int hashtabHash(String key) { + int hash = 0; + for (char c : key.toCharArray()) { + hash = (hash * 31 + c) % TABLE_SIZE; + } + return hash; + } + + private void hashtabInit() { + for (int i = 0; i < TABLE_SIZE; i++) { + table[i] = new LinkedList<>(); + } + } + + public void hashtabAdd(String key, String value) { + int hash = hashtabHash(key); + for (Entry entry : table[hash]) { + if (entry.key.equals(key)) { + throw new IllegalArgumentException("Key already exists: " + key); + } + } + table[hash].add(new Entry(key, value)); + } + + public String hashtabLookup(String key) { + int hash = hashtabHash(key); + for (Entry entry : table[hash]) { + if (entry.key.equals(key)) { + return entry.value; + } + } + return null; + } + + public void hashtabDelete(String key) { + int hash = hashtabHash(key); + table[hash].removeIf(entry -> entry.key.equals(key)); + } + + public static void main(String[] args) { + HashTable hashtable = new HashTable(); + hashtable.hashtabAdd("one", "1"); + hashtable.hashtabAdd("two", "2"); + hashtable.hashtabAdd("three", "3"); + + System.out.println("Lookup 'two': " + hashtable.hashtabLookup("two")); + hashtable.hashtabDelete("two"); + System.out.println("Lookup 'two' after deletion: " + hashtable.hashtabLookup("two")); + } +} diff --git a/students/23K9006/23K9006-p27/src/main/java/ru/mirea/practice/s0000001/1/HashTableDemo.java b/students/23K9006/23K9006-p27/src/main/java/ru/mirea/practice/s0000001/1/HashTableDemo.java new file mode 100644 index 000000000..5e944032c --- /dev/null +++ b/students/23K9006/23K9006-p27/src/main/java/ru/mirea/practice/s0000001/1/HashTableDemo.java @@ -0,0 +1,34 @@ +package ru.mirea.practice.s0000001; + +abstract class HashTableDemo { + public static void main(String[] args) { + HashTable hashtable = new HashTable(); + + hashtable.hashtabAdd("one", "1"); + hashtable.hashtabAdd("two", "2"); + hashtable.hashtabAdd("three", "3"); + hashtable.hashtabAdd("four", "4"); + hashtable.hashtabAdd("five", "5"); + + System.out.println("Initial dictionary:"); + for (String key : new String[]{"one", "two", "three", "four", "five"}) { + System.out.println(key + ": " + hashtable.hashtabLookup(key)); + } + + System.out.println("\nSearch for the key 'three':"); + String value = hashtable.hashtabLookup("three"); + if (value != null) { + System.out.println("'three' found with value: " + value); + } else { + System.out.println("'three' not found."); + } + + System.out.println("\nDeleting the key 'three'..."); + hashtable.hashtabDelete("three"); + + System.out.println("\nDictionary after deleting 'three':"); + for (String key : new String[]{"one", "two", "three", "four", "five"}) { + System.out.println(key + ": " + hashtable.hashtabLookup(key)); + } + } +} diff --git a/students/23K9006/23K9006-p27/src/main/java/ru/mirea/practice/s0000001/1/HashTableTest.java b/students/23K9006/23K9006-p27/src/main/java/ru/mirea/practice/s0000001/1/HashTableTest.java new file mode 100644 index 000000000..f81f731f7 --- /dev/null +++ b/students/23K9006/23K9006-p27/src/main/java/ru/mirea/practice/s0000001/1/HashTableTest.java @@ -0,0 +1,35 @@ +package ru.mirea.practice.s0000001; + +abstract class HashTableTest { + public static void main(String[] args) { + HashTable hashtable = new HashTable(); + + hashtable.hashtabAdd("one", "1"); + hashtable.hashtabAdd("two", "2"); + hashtable.hashtabAdd("three", "3"); + hashtable.hashtabAdd("four", "4"); + hashtable.hashtabAdd("five", "5"); + hashtable.hashtabAdd("six", "6"); + hashtable.hashtabAdd("seven", "7"); + hashtable.hashtabAdd("eight", "8"); + hashtable.hashtabAdd("nine", "9"); + hashtable.hashtabAdd("ten", "10"); + + System.out.println("Initial dictionary:"); + for (String key : new String[]{"one", "two", "three", "four", "five", "six", "seven", "eight", "nine", "ten"}) { + System.out.println(key + ": " + hashtable.hashtabLookup(key)); + } + + hashtable.hashtabDelete("five"); + System.out.println("\nDictionary after deleting 'five':"); + for (String key : new String[]{"one", "two", "three", "four", "five", "six", "seven", "eight", "nine", "ten"}) { + System.out.println(key + ": " + hashtable.hashtabLookup(key)); + } + + hashtable.hashtabAdd("five", "15"); + System.out.println("\nDictionary after adding 'five' with new value:"); + for (String key : new String[]{"one", "two", "three", "four", "five", "six", "seven", "eight", "nine", "ten"}) { + System.out.println(key + ": " + hashtable.hashtabLookup(key)); + } + } +} diff --git a/students/23K9006/23K9006-p28/pom.xml b/students/23K9006/23K9006-p28/pom.xml new file mode 100644 index 000000000..ff15112a1 --- /dev/null +++ b/students/23K9006/23K9006-p28/pom.xml @@ -0,0 +1,13 @@ + + + 4.0.0 + + 23K9006 + ru.mirea.practice + 2024.1 + ../pom.xml + + 23K9006-p28 + двадцать восьмое задание + diff --git a/students/23K9006/23K9006-p28/src/main/java/ru/mirea/practice/s0000001/1/SetConversionDemo.java b/students/23K9006/23K9006-p28/src/main/java/ru/mirea/practice/s0000001/1/SetConversionDemo.java new file mode 100644 index 000000000..4997b6738 --- /dev/null +++ b/students/23K9006/23K9006-p28/src/main/java/ru/mirea/practice/s0000001/1/SetConversionDemo.java @@ -0,0 +1,23 @@ +package ru.mirea.practice.s0000001; + +import java.util.HashSet; +import java.util.TreeSet; + +abstract class SetConversionDemo { + public static void main(String[] args) { + HashSet hashSet = new HashSet<>(); + hashSet.add(25); + hashSet.add(10); + hashSet.add(5); + hashSet.add(20); + hashSet.add(15); + + System.out.println("Original HashSet:"); + System.out.println(hashSet); + + TreeSet treeSet = new TreeSet<>(hashSet); + + System.out.println("\nConverted TreeSet:"); + System.out.println(treeSet); + } +} diff --git a/students/23K9006/23K9006-p29/pom.xml b/students/23K9006/23K9006-p29/pom.xml new file mode 100644 index 000000000..52969f901 --- /dev/null +++ b/students/23K9006/23K9006-p29/pom.xml @@ -0,0 +1,13 @@ + + + 4.0.0 + + 23K9006 + ru.mirea.practice + 2024.1 + ../pom.xml + + 23K9006-p29 + двадцать девятое задание + diff --git a/students/23K9006/23K9006-p29/src/main/java/ru/mirea/practice/s0000001/1/CityRoads.java b/students/23K9006/23K9006-p29/src/main/java/ru/mirea/practice/s0000001/1/CityRoads.java new file mode 100644 index 000000000..be6368738 --- /dev/null +++ b/students/23K9006/23K9006-p29/src/main/java/ru/mirea/practice/s0000001/1/CityRoads.java @@ -0,0 +1,29 @@ +package ru.mirea.practice.s0000001; + +import java.util.Scanner; + +abstract class CityRoads { + public static void main(String[] args) { + try (Scanner scanner = new Scanner(System.in)) { + int n = scanner.nextInt(); + + int[][] matrix = new int[n][n]; + for (int i = 0; i < n; i++) { + for (int j = 0; j < n; j++) { + matrix[i][j] = scanner.nextInt(); + } + } + + int roadCount = 0; + for (int i = 0; i < n; i++) { + for (int j = i + 1; j < n; j++) { + if (matrix[i][j] == 1) { + roadCount++; + } + } + } + + System.out.println(roadCount); + } + } +} diff --git a/students/23K9006/23K9006-p30/pom.xml b/students/23K9006/23K9006-p30/pom.xml new file mode 100644 index 000000000..98ac62968 --- /dev/null +++ b/students/23K9006/23K9006-p30/pom.xml @@ -0,0 +1,13 @@ + + + 4.0.0 + + 23K9006 + ru.mirea.practice + 2024.1 + ../pom.xml + + 23K9006-p30 + тридцатое задание + diff --git a/students/23K9006/23K9006-p30/src/main/java/ru/mirea/practice/s0000001/1/BinaryTree.java b/students/23K9006/23K9006-p30/src/main/java/ru/mirea/practice/s0000001/1/BinaryTree.java new file mode 100644 index 000000000..820cf86b8 --- /dev/null +++ b/students/23K9006/23K9006-p30/src/main/java/ru/mirea/practice/s0000001/1/BinaryTree.java @@ -0,0 +1,97 @@ +package ru.mirea.practice.s0000001; + +public class BinaryTree { + static class Node { + int value; + Node left; + Node right; + + Node(int value) { + this.value = value; + this.left = null; + this.right = null; + } + } + + private Node root; + + public void add(int value) { + root = addRecursive(root, value); + } + + private Node addRecursive(Node current, int value) { + if (current == null) { + return new Node(value); + } + if (value < current.value) { + current.left = addRecursive(current.left, value); + } else if (value > current.value) { + current.right = addRecursive(current.right, value); + } + return current; + } + + public boolean contains(int value) { + return containsRecursive(root, value); + } + + private boolean containsRecursive(Node current, int value) { + if (current == null) { + return false; + } + if (value == current.value) { + return true; + } + return value < current.value + ? containsRecursive(current.left, value) + : containsRecursive(current.right, value); + } + + public void delete(int value) { + root = deleteRecursive(root, value); + } + + private Node deleteRecursive(Node current, int value) { + if (current == null) { + return null; + } + if (value == current.value) { + if (current.left == null && current.right == null) { + return null; + } + if (current.right == null) { + return current.left; + } + if (current.left == null) { + return current.right; + } + int smallestValue = findSmallestValue(current.right); + current.value = smallestValue; + current.right = deleteRecursive(current.right, smallestValue); + return current; + } + if (value < current.value) { + current.left = deleteRecursive(current.left, value); + return current; + } + current.right = deleteRecursive(current.right, value); + return current; + } + + private int findSmallestValue(Node root) { + return root.left == null ? root.value : findSmallestValue(root.left); + } + + public void traverseInOrder() { + traverseInOrderRecursive(root); + System.out.println(); + } + + private void traverseInOrderRecursive(Node node) { + if (node != null) { + traverseInOrderRecursive(node.left); + System.out.print(node.value + " "); + traverseInOrderRecursive(node.right); + } + } +} diff --git a/students/23K9006/23K9006-p30/src/main/java/ru/mirea/practice/s0000001/1/BinaryTreeDemo.java b/students/23K9006/23K9006-p30/src/main/java/ru/mirea/practice/s0000001/1/BinaryTreeDemo.java new file mode 100644 index 000000000..72f67d78e --- /dev/null +++ b/students/23K9006/23K9006-p30/src/main/java/ru/mirea/practice/s0000001/1/BinaryTreeDemo.java @@ -0,0 +1,25 @@ +package ru.mirea.practice.s0000001; + +abstract class BinaryTreeDemo { + public static void main(String[] args) { + BinaryTree tree = new BinaryTree(); + tree.add(50); + tree.add(30); + tree.add(70); + tree.add(20); + tree.add(40); + tree.add(60); + tree.add(80); + + System.out.println("In-order traversal:"); + tree.traverseInOrder(); + + System.out.println("Tree contains 40: " + tree.contains(40)); + System.out.println("Tree contains 90: " + tree.contains(90)); + + System.out.println("Deleting 40..."); + tree.delete(40); + System.out.println("In-order traversal after deletion:"); + tree.traverseInOrder(); + } +} diff --git a/students/23K9006/README.adoc b/students/23K9006/README.adoc new file mode 100644 index 000000000..cc3fdff45 --- /dev/null +++ b/students/23K9006/README.adoc @@ -0,0 +1,2 @@ +Плешаков Илья +КАБО-01-23 diff --git a/students/23K9006/pom.xml b/students/23K9006/pom.xml new file mode 100644 index 000000000..3922f694e --- /dev/null +++ b/students/23K9006/pom.xml @@ -0,0 +1,45 @@ + + + 4.0.0 + + algorithms-and-data-structures + ru.mirea.practice + 2024.1 + ../../pom.xml + + 23K9006 + pom + Практическая работа Ильи + + + 23K9006-p01 + 23K9006-p02 + 23K9006-p03 + 23K9006-p04 + 23K9006-p05 + 23K9006-p06 + 23K9006-p07 + 23K9006-p08 + 23K9006-p09 + 23K9006-p10 + 23K9006-p11 + 23K9006-p13 + 23K9006-p14 + 23K9006-p16 + 23K9006-p17 + 23K9006-p19 + 23K9006-p20 + 23K9006-p21 + 23K9006-p22 + 23K9006-p23 + 23K9006-p24 + 23K9006-p25 + 23K9006-p26 + 23K9006-p27 + 23K9006-p28 + 23K9006-p29 + 23K9006-p30 + + +