diff --git a/students/23K0623/23K0623-p011/pom.xml b/students/23K0623/23K0623-p011/pom.xml new file mode 100644 index 000000000..3a7af81c7 --- /dev/null +++ b/students/23K0623/23K0623-p011/pom.xml @@ -0,0 +1,13 @@ + + + 4.0.0 + + 23K0623 + ru.mirea.practice + 2024.1 + ../pom.xml + + 23K0623-p011 + Массивы + diff --git a/students/23K0623/23K0623-p011/src/main/java/ru/mirea/practice/s23k0623/DateComparison.java b/students/23K0623/23K0623-p011/src/main/java/ru/mirea/practice/s23k0623/DateComparison.java new file mode 100644 index 000000000..b1e5222f0 --- /dev/null +++ b/students/23K0623/23K0623-p011/src/main/java/ru/mirea/practice/s23k0623/DateComparison.java @@ -0,0 +1,45 @@ +package ru.mirea.practice.s23k0623; + +import java.time.LocalDate; +import java.time.LocalTime; +import java.time.format.DateTimeFormatter; +import java.time.format.DateTimeParseException; +import java.util.Scanner; + +public final class DateComparison { + + private DateComparison() { + + } + + public static void main(String[] args) { + try (Scanner scanner = new Scanner(System.in)) { + DateTimeFormatter dateFormatter = DateTimeFormatter.ofPattern("yyyy-MM-dd"); + System.out.println("Введите дату в формате yyyy-MM-dd:"); + String userInput = scanner.nextLine(); + + try { + LocalDate userDate = LocalDate.parse(userInput, dateFormatter); + + LocalDate currentDate = LocalDate.now(); + + if (userDate.isBefore(currentDate)) { + System.out.println("Введенная дата раньше текущей даты."); + } else if (userDate.isAfter(currentDate)) { + System.out.println("Введенная дата позже текущей даты."); + } else { + System.out.println("Введенная дата совпадает с текущей датой."); + } + + LocalTime currentTime = LocalTime.now(); + System.out.println("Текущее системное время: " + currentTime); + + } catch (DateTimeParseException e) { + System.out.println("Неверный формат даты. Пожалуйста, введите дату в формате yyyy-MM-dd."); + } finally { + scanner.close(); + } + } + } + +} diff --git a/students/23K0623/23K0623-p011/src/main/java/ru/mirea/practice/s23k0623/Developer.java b/students/23K0623/23K0623-p011/src/main/java/ru/mirea/practice/s23k0623/Developer.java new file mode 100644 index 000000000..89ea53f27 --- /dev/null +++ b/students/23K0623/23K0623-p011/src/main/java/ru/mirea/practice/s23k0623/Developer.java @@ -0,0 +1,21 @@ +package ru.mirea.practice.s23k0623; + +import java.util.Date; + +public final class Developer { + + private Developer() { + + } + + public static void main(String[] args) { + String developerLastName = "Иванов"; + String assignmentReceivedDate = "2024-09-24 10:00:00"; + Date currentDate = new Date(); + System.out.println("Фамилия разработчика: " + developerLastName); + System.out.println("Дата и время получения задания: " + assignmentReceivedDate); + System.out.println("Дата и время сдачи задания: " + currentDate); + } + + +} diff --git a/students/23K0623/23K0623-p012/pom.xml b/students/23K0623/23K0623-p012/pom.xml new file mode 100644 index 000000000..ec306221d --- /dev/null +++ b/students/23K0623/23K0623-p012/pom.xml @@ -0,0 +1,13 @@ + + + 4.0.0 + + 23K0623 + ru.mirea.practice + 2024.1 + ../pom.xml + + 23K0623-p012 + Массивы + diff --git a/students/23K0623/23K0623-p012/src/main/java/ru/mirea/practice/s23k0623/Circle.java b/students/23K0623/23K0623-p012/src/main/java/ru/mirea/practice/s23k0623/Circle.java new file mode 100644 index 000000000..b7aba18f7 --- /dev/null +++ b/students/23K0623/23K0623-p012/src/main/java/ru/mirea/practice/s23k0623/Circle.java @@ -0,0 +1,13 @@ +package ru.mirea.practice.s23k0623; + +public class Circle extends Shape { + + public Circle(double x, double y, String color) { + super(x, y, color); + } + + @Override + public String toString() { + return "Square{" + super.toString() + "}"; + } +} diff --git a/students/23K0623/23K0623-p012/src/main/java/ru/mirea/practice/s23k0623/Shape.java b/students/23K0623/23K0623-p012/src/main/java/ru/mirea/practice/s23k0623/Shape.java new file mode 100644 index 000000000..20ba1ec79 --- /dev/null +++ b/students/23K0623/23K0623-p012/src/main/java/ru/mirea/practice/s23k0623/Shape.java @@ -0,0 +1,35 @@ +package ru.mirea.practice.s23k0623; + +public abstract class Shape { + + private double x; + private double y; + private String color; + + public Shape(double x, double y, String color) { + this.x = x; + this.y = y; + this.color = color; + } + + public double getX() { + return x; + } + + public double getY() { + return y; + } + + public String getColor() { + return color; + } + + @Override + public String toString() { + return "Shape{" + + "x='" + x + '\'' + + ", y='" + y + '\'' + + ", color='" + color + '\'' + + '}'; + } +} diff --git a/students/23K0623/23K0623-p012/src/main/java/ru/mirea/practice/s23k0623/Square.java b/students/23K0623/23K0623-p012/src/main/java/ru/mirea/practice/s23k0623/Square.java new file mode 100644 index 000000000..2bd102021 --- /dev/null +++ b/students/23K0623/23K0623-p012/src/main/java/ru/mirea/practice/s23k0623/Square.java @@ -0,0 +1,13 @@ +package ru.mirea.practice.s23k0623; + +public class Square extends Shape { + + public Square(double x, double y, String color) { + super(x, y, color); + } + + @Override + public String toString() { + return "Square{" + super.toString() + "}"; + } +} diff --git a/students/23K0623/23K0623-p012/src/main/java/ru/mirea/practice/s23k0623/Twotask.java b/students/23K0623/23K0623-p012/src/main/java/ru/mirea/practice/s23k0623/Twotask.java new file mode 100644 index 000000000..55b9a1f89 --- /dev/null +++ b/students/23K0623/23K0623-p012/src/main/java/ru/mirea/practice/s23k0623/Twotask.java @@ -0,0 +1,14 @@ +package ru.mirea.practice.s23k0623; + +public final class Twotask { + + private Twotask() { + } + + public static void main(String[] args) { + Square square = new Square(1.0, 2.0, "red"); + Square circle = new Square(1.0, 2.0, "blue"); + System.out.println(square); + System.out.println(circle); + } +} diff --git a/students/23K0623/23K0623-p013/pom.xml b/students/23K0623/23K0623-p013/pom.xml new file mode 100644 index 000000000..903a109ce --- /dev/null +++ b/students/23K0623/23K0623-p013/pom.xml @@ -0,0 +1,13 @@ + + + 4.0.0 + + 23K0623 + ru.mirea.practice + 2024.1 + ../pom.xml + + 23K0623-p013 + Массивы + diff --git a/students/23K0623/23K0623-p013/src/main/java/ru/mirea/practice/s23k0623/Address.java b/students/23K0623/23K0623-p013/src/main/java/ru/mirea/practice/s23k0623/Address.java new file mode 100644 index 000000000..769ee1e07 --- /dev/null +++ b/students/23K0623/23K0623-p013/src/main/java/ru/mirea/practice/s23k0623/Address.java @@ -0,0 +1,26 @@ +package ru.mirea.practice.s23k0623; + +public class Address { + private String country; + private String region; + private String city; + private String street; + private String house; + private String building; + private String apartment; + + public Address(String country, String region, String city, String street, String house, String building, String apartment) { + this.country = country; + this.region = region; + this.city = city; + this.street = street; + this.house = house; + this.building = building; + this.apartment = apartment; + } + + @Override + public String toString() { + return String.join(", ", country, region, city, street, house, building, apartment); + } +} diff --git a/students/23K0623/23K0623-p013/src/main/java/ru/mirea/practice/s23k0623/First.java b/students/23K0623/23K0623-p013/src/main/java/ru/mirea/practice/s23k0623/First.java new file mode 100644 index 000000000..708e90011 --- /dev/null +++ b/students/23K0623/23K0623-p013/src/main/java/ru/mirea/practice/s23k0623/First.java @@ -0,0 +1,83 @@ +package ru.mirea.practice.s23k0623; + +import java.util.Locale; + +public final class First { + + private First() { + + } + + public static void main(String[] args) { + String input = "I like Java!!!"; + printLastCharacter(input); + endsWithMarks(input); + startsWithILike(input); + containsJava(input); + findSubstringPosition(input); + System.out.println(replaceAWithO(input)); + System.out.println(convertToUpperCase(input)); + System.out.println(convertToLowerCase(input)); + System.out.println(cutOutSubstring(input)); + } + + public static void printLastCharacter(String str) { + if (str != null && str.length() > 0) { + char lastChar = str.charAt(str.length() - 1); + System.out.println("Последний символ строки: " + lastChar); + } else { + System.out.println("Строка пуста или null."); + } + } + + public static void endsWithMarks(String str) { + if (str.endsWith("!!!")) { + System.out.println("Строка заканчивается на \"!!!\""); + } else { + System.out.println("Строка не заканчивается на \"!!!\""); + } + } + + public static void startsWithILike(String str) { + if (str.startsWith("I like")) { + System.out.println("Строка начинается с \"I like!\""); + } else { + System.out.println("Строка не начинается с \"I like!\""); + } + } + + public static void containsJava(String str) { + if (str.contains("Java")) { + System.out.println("Строка содержит \"Java\""); + } else { + System.out.println("Строка не содержит \"Java\""); + } + } + + public static void findSubstringPosition(String str) { + if (str.indexOf("Java") != -1) { + System.out.println("Подстрока \"Java\" найдена на позиции: " + str.indexOf("Java")); + } else { + System.out.println("Подстрока \"Java\" не найдена."); + } + } + + public static String replaceAWithO(String str) { + return str.replace('a', 'o'); + } + + public static String convertToUpperCase(String str) { + return str.toUpperCase(Locale.US); + } + + public static String convertToLowerCase(String str) { + return str.toLowerCase(Locale.US); + } + + public static String cutOutSubstring(String str) { + int startIndex = str.indexOf("Java"); + int endIndex = startIndex + "Java".length(); + return str.substring(startIndex, endIndex); + } +} + diff --git a/students/23K0623/23K0623-p013/src/main/java/ru/mirea/practice/s23k0623/Person.java b/students/23K0623/23K0623-p013/src/main/java/ru/mirea/practice/s23k0623/Person.java new file mode 100644 index 000000000..7479cfebe --- /dev/null +++ b/students/23K0623/23K0623-p013/src/main/java/ru/mirea/practice/s23k0623/Person.java @@ -0,0 +1,52 @@ +package ru.mirea.practice.s23k0623; + +public class Person { + private String lastName; + private String firstName; + private 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(); + } + + public String getLastName() { + return lastName; + } + + public void setLastName(String lastName) { + this.lastName = lastName; + } + + public String getFirstName() { + return firstName; + } + + public void setFirstName(String firstName) { + this.firstName = firstName; + } + + public String getMiddleName() { + return middleName; + } + + public void setMiddleName(String middleName) { + this.middleName = middleName; + } + +} \ No newline at end of file diff --git a/students/23K0623/23K0623-p013/src/main/java/ru/mirea/practice/s23k0623/Three.java b/students/23K0623/23K0623-p013/src/main/java/ru/mirea/practice/s23k0623/Three.java new file mode 100644 index 000000000..6aacb3db8 --- /dev/null +++ b/students/23K0623/23K0623-p013/src/main/java/ru/mirea/practice/s23k0623/Three.java @@ -0,0 +1,66 @@ +package ru.mirea.practice.s23k0623; + +import java.util.StringTokenizer; + +public final class Three { + + private Three() { + + } + + public static Address parseAddressWithSplit(String address) { + String[] parts = address.split(","); + if (parts.length < 6) { + throw new IllegalArgumentException("Недостаточно частей адреса."); + } + return new Address( + parts[0].trim(), + parts[1].trim(), + parts[2].trim(), + parts[3].trim(), + parts[4].trim(), + parts.length > 5 ? parts[5].trim() : null, + parts.length > 6 ? parts[6].trim() : null + ); + } + + public static Address parseAddressWithTokenizer(String address) { + StringTokenizer tokenizer = new StringTokenizer(address, ",.;"); + String[] parts = new String[7]; + int i = 0; + while (tokenizer.hasMoreTokens() && i < parts.length) { + parts[i++] = tokenizer.nextToken().trim(); + } + + if (i < 6) { + throw new IllegalArgumentException("Недостаточно частей адреса."); + } + + return new Address( + parts[0], + parts[1], + parts[2], + parts[3], + parts[4], + i > 5 ? parts[5] : null, + i > 6 ? parts[6] : null + ); + } + + public static void main(String[] args) { + + String address1 = "Россия, Москва, Москва, Арбат, 12, 1, 34"; + String address2 = "США, Калифорния, Лос-Анджелес, Беверли Хиллз, 1234, 5, 67"; + String address3 = "Франция, Иль-де-Франс, Париж, Елисейские поля, 8, 2, 88"; + String address4 = "Германия, Бавария, Мюнхен, Штутгартская, 45; 3; 9"; + + + System.out.println("Разбор адреса с использованием split():"); + System.out.println(parseAddressWithSplit(address1)); + System.out.println(parseAddressWithSplit(address2)); + System.out.println(parseAddressWithSplit(address3)); + + System.out.println("\nРазбор адреса с использованием StringTokenizer:"); + System.out.println(parseAddressWithTokenizer(address4)); + } +} diff --git a/students/23K0623/23K0623-p013/src/main/java/ru/mirea/practice/s23k0623/Two.java b/students/23K0623/23K0623-p013/src/main/java/ru/mirea/practice/s23k0623/Two.java new file mode 100644 index 000000000..adcdef232 --- /dev/null +++ b/students/23K0623/23K0623-p013/src/main/java/ru/mirea/practice/s23k0623/Two.java @@ -0,0 +1,19 @@ +package ru.mirea.practice.s23k0623; + +public final class Two { + private Two() { + + } + + public static void main(String[] args) { + Person person1 = new Person("Иванов", "Иван", "Иванович"); + Person person2 = new Person("Петров", "Петр", null); + Person person3 = new Person("Сидоров", null, "Сидорович"); + Person person4 = new Person("Кузнецов", 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/23K0623/23K0623-p014/pom.xml b/students/23K0623/23K0623-p014/pom.xml new file mode 100644 index 000000000..3362ad0c7 --- /dev/null +++ b/students/23K0623/23K0623-p014/pom.xml @@ -0,0 +1,13 @@ + + + 4.0.0 + + 23K0623 + ru.mirea.practice + 2024.1 + ../pom.xml + + 23K0623-p014 + Массивы + diff --git a/students/23K0623/23K0623-p014/src/main/java/ru/mirea/practice/s23k0623/Three.java b/students/23K0623/23K0623-p014/src/main/java/ru/mirea/practice/s23k0623/Three.java new file mode 100644 index 000000000..b80310852 --- /dev/null +++ b/students/23K0623/23K0623-p014/src/main/java/ru/mirea/practice/s23k0623/Three.java @@ -0,0 +1,24 @@ +package ru.mirea.practice.s23k0623; + +import java.util.regex.Matcher; +import java.util.regex.Pattern; + +public final class Three { + private Three() { + + } + + public static void main(String[] args) { + String text = "Here are some prices: 25.98 USD, 44 ERR, 0.004 EU, 123.45 RUR, 67.89 EUR, 100 USD, 200.50 RUB."; + extractPrices(text); + } + + public static void extractPrices(String text) { + String regex = "\\b\\d+(\\.\\d{1,2})?\\s(USD|RUB|RUR|EUR)\\b"; + Pattern pattern = Pattern.compile(regex); + Matcher matcher = pattern.matcher(text); + while (matcher.find()) { + System.out.println(matcher.group()); + } + } +} diff --git a/students/23K0623/23K0623-p014/src/main/java/ru/mirea/practice/s23k0623/Two.java b/students/23K0623/23K0623-p014/src/main/java/ru/mirea/practice/s23k0623/Two.java new file mode 100644 index 000000000..7521b0a65 --- /dev/null +++ b/students/23K0623/23K0623-p014/src/main/java/ru/mirea/practice/s23k0623/Two.java @@ -0,0 +1,30 @@ +package ru.mirea.practice.s23k0623; + +import java.util.regex.Matcher; +import java.util.regex.Pattern; + +public final class Two { + private Two() { + + } + + public static void main(String[] args) { + String regex = "^abcdefghijklmnopqrstuv18340$"; + String[] testStrings = { + "abcdefghijklmnopqrstuv18340", + "abcdefghijklmnoasdfasdpqrstuv18340", + "abcdefghijklmnopqrstuv183401", + "abcdefghijklmnopqrstuv1834" + }; + + for (String test : testStrings) { + Matcher matcher = Pattern.compile(regex).matcher(test); + if (matcher.matches()) { + System.out.println(test + " - совпадает"); + } else { + System.out.println(test + " - не совпадает"); + } + } + } +} + diff --git a/students/23K0623/23K0623-p015/pom.xml b/students/23K0623/23K0623-p015/pom.xml new file mode 100644 index 000000000..f990fc957 --- /dev/null +++ b/students/23K0623/23K0623-p015/pom.xml @@ -0,0 +1,13 @@ + + + 4.0.0 + + 23K0623 + ru.mirea.practice + 2024.1 + ../pom.xml + + 23K0623-p015 + Массивы + diff --git a/students/23K0623/23K0623-p015/src/main/java/ru/mirea/practice/s23k0623/Calculator.java b/students/23K0623/23K0623-p015/src/main/java/ru/mirea/practice/s23k0623/Calculator.java new file mode 100644 index 000000000..fff8c0165 --- /dev/null +++ b/students/23K0623/23K0623-p015/src/main/java/ru/mirea/practice/s23k0623/Calculator.java @@ -0,0 +1,75 @@ +package ru.mirea.practice.s23k0164.t1; + +import java.util.Scanner; +import java.util.InputMismatchException; + +public final class Calculator { + + private Calculator() { + + } + + public static void main(String[] args) { + try (Scanner scanner = new Scanner(System.in)) { + boolean validInput = false; + int size = 0; + while (!validInput) { + System.out.println("Добро пожаловать в калькулятор, введите первое число:"); + try { + size = scanner.nextInt(); + validInput = true; + } catch (InputMismatchException e) { + System.out.println("Ошибка ввода. Пожалуйста, введите целое число."); + scanner.next(); + } + } + validInput = false; + int size2 = 0; + while (!validInput) { + System.out.println("Введите первое число:"); + + try { + size2 = scanner.nextInt(); + validInput = true; + } catch (InputMismatchException e) { + System.out.println("Ошибка ввода. Пожалуйста, введите целое число."); + scanner.next(); + } + } + + System.out.println("Выберите операцию:"); + System.out.println("1. Сложение"); + System.out.println("2. Вычитание"); + System.out.println("3. Умножение"); + System.out.println("4. Деление"); + + int choice = scanner.nextInt(); + double result; + switch (choice) { + case 1: + result = size + size2; + System.out.println("Результат: " + result); + break; + case 2: + result = size - size2; + System.out.println("Результат: " + result); + break; + case 3: + result = size * size2; + System.out.println("Результат: " + result); + break; + case 4: + if (size2 != 0) { + result = size / size2; + System.out.println("Результат: " + result); + } else { + System.out.println("Ошибка: Деление на ноль невозможно."); + } + break; + default: + System.out.println("Неверный выбор операции."); + break; + } + } + } +} diff --git a/students/23K0623/23K0623-p016/pom.xml b/students/23K0623/23K0623-p016/pom.xml new file mode 100644 index 000000000..810b6a933 --- /dev/null +++ b/students/23K0623/23K0623-p016/pom.xml @@ -0,0 +1,13 @@ + + + 4.0.0 + + 23K0623 + ru.mirea.practice + 2024.1 + ../pom.xml + + 23K0623-p016 + Массивы + diff --git a/students/23K0623/23K0623-p016/src/main/java/ru/mirea/practice/s23k0623/GuessingGame.java b/students/23K0623/23K0623-p016/src/main/java/ru/mirea/practice/s23k0623/GuessingGame.java new file mode 100644 index 000000000..d18dc2dbb --- /dev/null +++ b/students/23K0623/23K0623-p016/src/main/java/ru/mirea/practice/s23k0623/GuessingGame.java @@ -0,0 +1,47 @@ +package ru.mirea.practice.s23k0623; + +import java.util.Random; +import java.util.Scanner; + +public final class GuessingGame { + private GuessingGame() { + + } + + public static void main(String[] args) { + Random random = new Random(); + int randomNumber = random.nextInt(21) + 1; + int count = 3; + System.out.println("Угадай число от 1 до 21, у тебя три попытки, я принимаю на вход целые числа"); + try (Scanner scanner = new Scanner(System.in)) { + while (count > 0) { + int userNumber = 0; + boolean isValid = false; + while (!isValid) { + System.out.print("Введите число: "); + if (scanner.hasNextInt()) { + userNumber = scanner.nextInt(); + isValid = true; + } else { + System.out.println("Неправильный ввод. Пожалуйста, введите целое число."); + scanner.next(); + } + } + + count -= 1; + if (userNumber > randomNumber) { + System.out.println("Введённое число больше загаданного, у вас осталось" + count + "попыток"); + } else if (userNumber < randomNumber) { + System.out.println("Введённое число меньше загаданного" + count + "попыток"); + } else { + System.out.println("Введённое число равно " + randomNumber); + break; + } + + if (count == 0) { + System.out.println("К сожалению, вы не угадали. Загаданное число было " + randomNumber); + } + } + } + } +} diff --git a/students/23K0623/23K0623-p017/pom.xml b/students/23K0623/23K0623-p017/pom.xml new file mode 100644 index 000000000..0fdb0231d --- /dev/null +++ b/students/23K0623/23K0623-p017/pom.xml @@ -0,0 +1,13 @@ + + + 4.0.0 + + 23K0623 + ru.mirea.practice + 2024.1 + ../pom.xml + + 23K0623-p017 + Массивы + diff --git a/students/23K0623/23K0623-p017/src/main/java/ru/mirea/practice/s23k0623/CyclicDoublyLinkedList.java b/students/23K0623/23K0623-p017/src/main/java/ru/mirea/practice/s23k0623/CyclicDoublyLinkedList.java new file mode 100644 index 000000000..5420dc6e7 --- /dev/null +++ b/students/23K0623/23K0623-p017/src/main/java/ru/mirea/practice/s23k0623/CyclicDoublyLinkedList.java @@ -0,0 +1,69 @@ + +package ru.mirea.practice.s23k0623; + +public class CyclicDoublyLinkedList { + private Node head; + + private static class Node { + int data; + Node prev; + Node next; + + public Node(int data) { + this.data = data; + } + } + + public void insert(int data) { + Node newNode = new Node(data); + if (head == null) { + head = newNode; + newNode.next = newNode; + newNode.prev = newNode; + } else { + Node last = head.prev; + newNode.next = head; + newNode.prev = last; + head.prev = newNode; + last.next = newNode; + } + } + + public void removeFirst() { + if (head == null) { + return; + } else if (head.next == head) { + head = null; + } else { + Node last = head.prev; + last.next = head.next; + head.next.prev = last; + head = head.next; + } + } + + public CyclicDoublyLinkedList excludeAndCreateNew(int excludeData) { + CyclicDoublyLinkedList newList = new CyclicDoublyLinkedList(); + Node current = head; + do { + if (current.data != excludeData) { + newList.insert(current.data); + } + current = current.next; + } while (current != head); + return newList; + } + + public void printList() { + if (head == null) { + System.out.println("Список пуст"); + return; + } + Node current = head; + do { + System.out.print(current.data + " "); + current = current.next; + } while (current != head); + System.out.println(); + } +} diff --git a/students/23K0623/23K0623-p017/src/main/java/ru/mirea/practice/s23k0623/Tester.java b/students/23K0623/23K0623-p017/src/main/java/ru/mirea/practice/s23k0623/Tester.java new file mode 100644 index 000000000..73321750e --- /dev/null +++ b/students/23K0623/23K0623-p017/src/main/java/ru/mirea/practice/s23k0623/Tester.java @@ -0,0 +1,26 @@ + +package ru.mirea.practice.s23k0623; + +public abstract class Tester { + public static void main(String[] args) { + CyclicDoublyLinkedList list = new CyclicDoublyLinkedList(); + list.insert(1); + list.insert(2); + list.insert(3); + list.insert(4); + list.insert(5); + + System.out.println("Исходный список:"); + list.printList(); + + list.removeFirst(); + + System.out.println("Список после удаления первого элемента:"); + list.printList(); + + CyclicDoublyLinkedList newList = list.excludeAndCreateNew(3); + + System.out.println("Новый список без элемента 3:"); + newList.printList(); + } +} diff --git a/students/23K0623/23K0623-p018/pom.xml b/students/23K0623/23K0623-p018/pom.xml new file mode 100644 index 000000000..33c94a467 --- /dev/null +++ b/students/23K0623/23K0623-p018/pom.xml @@ -0,0 +1,13 @@ + + + 4.0.0 + + 23K0623 + ru.mirea.practice + 2024.1 + ../pom.xml + + 23K0623-p018 + Массивы + diff --git a/students/23K0623/23K0623-p018/src/main/java/ru/mirea/practice/s23k0623/Exception3.java b/students/23K0623/23K0623-p018/src/main/java/ru/mirea/practice/s23k0623/Exception3.java new file mode 100644 index 000000000..2e808ecc6 --- /dev/null +++ b/students/23K0623/23K0623-p018/src/main/java/ru/mirea/practice/s23k0623/Exception3.java @@ -0,0 +1,32 @@ +package ru.mirea.practice.s23k0623; + +import java.util.Scanner; + +public final class Exception3 { + + private Exception3() { + + } + + public static void exceptionDemo() { + try (Scanner myScanner = new Scanner(System.in)) { + boolean validInput = false; + while (!validInput) { + System.out.print("Enter an integer: "); + String intString = myScanner.next(); + try { + int i = Integer.parseInt(intString); + System.out.println(2 / i); + validInput = true; + } catch (NumberFormatException e) { + System.out.println("Input error. Please enter a valid integer."); + } catch (ArithmeticException e) { + System.out.println("Cannot divide by zero. Please enter a non-zero integer."); + } finally { + System.out.println("Attempt completed."); + } + + } + } + } +} \ No newline at end of file diff --git a/students/23K0623/23K0623-p018/src/main/java/ru/mirea/practice/s23k0623/Four.java b/students/23K0623/23K0623-p018/src/main/java/ru/mirea/practice/s23k0623/Four.java new file mode 100644 index 000000000..a96ae1307 --- /dev/null +++ b/students/23K0623/23K0623-p018/src/main/java/ru/mirea/practice/s23k0623/Four.java @@ -0,0 +1,12 @@ +package ru.mirea.practice.s23k0623; + + +public final class Four { + private Four() { + + } + + public static void main(String[] args) { + Exception3.exceptionDemo(); + } +} \ No newline at end of file diff --git a/students/23K0623/23K0623-p018/src/main/java/ru/mirea/practice/s23k0623/ThrowsDemo.java b/students/23K0623/23K0623-p018/src/main/java/ru/mirea/practice/s23k0623/ThrowsDemo.java new file mode 100644 index 000000000..3866922d2 --- /dev/null +++ b/students/23K0623/23K0623-p018/src/main/java/ru/mirea/practice/s23k0623/ThrowsDemo.java @@ -0,0 +1,20 @@ +package ru.mirea.practice.s23k0623; + +public final class ThrowsDemo { + + private ThrowsDemo() { + + } + + public void getDetails(String key) { + if (key == null) { + throw new NullPointerException("null key in getDetails"); + } + System.out.println("Details for key: " + key); + } + + public static void main(String[] args) { + ThrowsDemo demo = new ThrowsDemo(); + demo.getDetails(null); + } +} \ No newline at end of file diff --git a/students/23K0623/23K0623-p019/pom.xml b/students/23K0623/23K0623-p019/pom.xml new file mode 100644 index 000000000..afd5b6ead --- /dev/null +++ b/students/23K0623/23K0623-p019/pom.xml @@ -0,0 +1,13 @@ + + + 4.0.0 + + 23K0623 + ru.mirea.practice + 2024.1 + ../pom.xml + + 23K0623-p019 + Массивы + diff --git a/students/23K0623/23K0623-p019/src/main/java/ru/mirea/practice/s23k0623/Customer.java b/students/23K0623/23K0623-p019/src/main/java/ru/mirea/practice/s23k0623/Customer.java new file mode 100644 index 000000000..c54fc1250 --- /dev/null +++ b/students/23K0623/23K0623-p019/src/main/java/ru/mirea/practice/s23k0623/Customer.java @@ -0,0 +1,26 @@ +package ru.mirea.practice.s23k0623; + +class Customer { + private final String fullName; + private final String inn; + + public Customer(String fullName, String inn) { + this.fullName = fullName; + this.inn = inn; + } + + public String getFullName() { + return fullName; + } + + public String getInn() { + return inn; + } + + // Проверка ИНН на корректность + public void validateInn() throws InvalidinnException { + if (inn.length() != 10 || !inn.matches("\\d+")) { + throw new InvalidinnException("Недействительный ИНН: " + inn); + } + } +} \ No newline at end of file diff --git a/students/23K0623/23K0623-p019/src/main/java/ru/mirea/practice/s23k0623/InvalidinnException.java b/students/23K0623/23K0623-p019/src/main/java/ru/mirea/practice/s23k0623/InvalidinnException.java new file mode 100644 index 000000000..c0f389da0 --- /dev/null +++ b/students/23K0623/23K0623-p019/src/main/java/ru/mirea/practice/s23k0623/InvalidinnException.java @@ -0,0 +1,7 @@ +package ru.mirea.practice.s23k0623; + +class InvalidinnException extends Exception { + public InvalidinnException(String message) { + super(message); + } +} \ No newline at end of file diff --git a/students/23K0623/23K0623-p019/src/main/java/ru/mirea/practice/s23k0623/OnlinePurchase.java b/students/23K0623/23K0623-p019/src/main/java/ru/mirea/practice/s23k0623/OnlinePurchase.java new file mode 100644 index 000000000..373abbc52 --- /dev/null +++ b/students/23K0623/23K0623-p019/src/main/java/ru/mirea/practice/s23k0623/OnlinePurchase.java @@ -0,0 +1,24 @@ +package ru.mirea.practice.s23k0623; + +import java.util.Scanner; + +public abstract class OnlinePurchase { + public static void main(String[] args) { + + try (Scanner scanner = new Scanner(System.in)) { + System.out.println("Введите ФИО:"); + String fullName = scanner.nextLine(); + + System.out.println("Введите ИНН:"); + String inn = scanner.nextLine(); + + Customer customer = new Customer(fullName, inn); + customer.validateInn(); // Проверка ИНН + + System.out.println("Покупка завершена для клиента: " + customer.getFullName()); + + } catch (InvalidinnException e) { + System.err.println("Ошибка: " + e.getMessage()); + } + } +} \ No newline at end of file diff --git a/students/23K0623/23K0623-p020/pom.xml b/students/23K0623/23K0623-p020/pom.xml new file mode 100644 index 000000000..92ec39bdd --- /dev/null +++ b/students/23K0623/23K0623-p020/pom.xml @@ -0,0 +1,13 @@ + + + 4.0.0 + + 23K0623 + ru.mirea.practice + 2024.1 + ../pom.xml + + 23K0623-p020 + Массивы + diff --git a/students/23K0623/23K0623-p020/src/main/java/ru/mirea/practice/s23k0623/Main.java b/students/23K0623/23K0623-p020/src/main/java/ru/mirea/practice/s23k0623/Main.java new file mode 100644 index 000000000..b0c395478 --- /dev/null +++ b/students/23K0623/23K0623-p020/src/main/java/ru/mirea/practice/s23k0623/Main.java @@ -0,0 +1,17 @@ +package ru.mirea.practice.s23k0623; + +public abstract class Main { + public static void main(String[] args) { + // Пример использования с разными типами данных + Trio trio = new Trio<>("Hello", 42, 3.14); + + System.out.println(trio); // Выводит: Trio{first=Hello, second=42, third=3.14} + + System.out.println(trio); // Выводит тип данных + + // Доступ к отдельным значениям + System.out.println("First: " + trio.getFirst()); // Hello + System.out.println("Second: " + trio.getSecond()); // 42 + System.out.println("Third: " + trio.getThird()); // 3.14 + } +} \ No newline at end of file diff --git a/students/23K0623/23K0623-p020/src/main/java/ru/mirea/practice/s23k0623/Trio.java b/students/23K0623/23K0623-p020/src/main/java/ru/mirea/practice/s23k0623/Trio.java new file mode 100644 index 000000000..25b217f7e --- /dev/null +++ b/students/23K0623/23K0623-p020/src/main/java/ru/mirea/practice/s23k0623/Trio.java @@ -0,0 +1,47 @@ + +package ru.mirea.practice.s23k0623; + +public class Trio { + private T first; + private V second; + private K third; + + public Trio(T first, V second, K third) { + this.first = first; + this.second = second; + this.third = third; + } + + public T getFirst() { + return first; + } + + public void setFirst(T first) { + this.first = first; + } + + public V getSecond() { + return second; + } + + public void setSecond(V second) { + this.second = second; + } + + public K getThird() { + return third; + } + + public void setThird(K third) { + this.third = third; + } + + @Override + public String toString() { + return "Trio{" + + "first=" + first + + ", second=" + second + + ", third=" + third + + '}'; + } +} diff --git a/students/23K0623/23K0623-p021/pom.xml b/students/23K0623/23K0623-p021/pom.xml new file mode 100644 index 000000000..0757738a6 --- /dev/null +++ b/students/23K0623/23K0623-p021/pom.xml @@ -0,0 +1,13 @@ + + + 4.0.0 + + 23K0623 + ru.mirea.practice + 2024.1 + ../pom.xml + + 23K0623-p021 + Массивы + diff --git a/students/23K0623/23K0623-p021/src/main/java/ru/mirea/practice/s23k0623/prog1/Main.java b/students/23K0623/23K0623-p021/src/main/java/ru/mirea/practice/s23k0623/prog1/Main.java new file mode 100644 index 000000000..8aee10548 --- /dev/null +++ b/students/23K0623/23K0623-p021/src/main/java/ru/mirea/practice/s23k0623/prog1/Main.java @@ -0,0 +1,26 @@ +package ru.mirea.practice.s23k0623.prog1; + +import java.util.Arrays; +import java.util.List; + +public abstract class Main { + public static List convertArrayToList(String[] array) { + return Arrays.asList(array); + } + + // Метод для конвертации массива чисел в список + public static List convertArrayToList(Integer[] array) { + return Arrays.asList(array); + } + + public static void main(String[] args) { + String[] stringArray = {"apple", "banana", "cherry"}; + Integer[] intArray = {1, 2, 3, 4, 5}; + + List stringList = convertArrayToList(stringArray); + List intList = convertArrayToList(intArray); + + System.out.println("Список строк: " + stringList); + System.out.println("Список чисел: " + intList); + } +} diff --git a/students/23K0623/23K0623-p021/src/main/java/ru/mirea/practice/s23k0623/prog2/AllType.java b/students/23K0623/23K0623-p021/src/main/java/ru/mirea/practice/s23k0623/prog2/AllType.java new file mode 100644 index 000000000..d5b02cb71 --- /dev/null +++ b/students/23K0623/23K0623-p021/src/main/java/ru/mirea/practice/s23k0623/prog2/AllType.java @@ -0,0 +1,16 @@ +package ru.mirea.practice.s23k0623.prog2; + +import java.util.Arrays; + +public class AllType { + private final Object[] array; + + public AllType(Object[] array) { + this.array = array; + } + + @Override + public String toString() { + return Arrays.toString(array); + } +} diff --git a/students/23K0623/23K0623-p021/src/main/java/ru/mirea/practice/s23k0623/prog2/Main.java b/students/23K0623/23K0623-p021/src/main/java/ru/mirea/practice/s23k0623/prog2/Main.java new file mode 100644 index 000000000..9f31eae32 --- /dev/null +++ b/students/23K0623/23K0623-p021/src/main/java/ru/mirea/practice/s23k0623/prog2/Main.java @@ -0,0 +1,9 @@ +package ru.mirea.practice.s23k0623.prog2; + +public abstract class Main { + public static void main(String[] args) { + Integer[] mas1 = {1, 2, 3, 4}; + AllType intmas1 = new AllType(mas1); + System.out.println("Integer array: " + intmas1); + } +} diff --git a/students/23K0623/23K0623-p021/src/main/java/ru/mirea/practice/s23k0623/prog3/AllType.java b/students/23K0623/23K0623-p021/src/main/java/ru/mirea/practice/s23k0623/prog3/AllType.java new file mode 100644 index 000000000..a4b2d48b9 --- /dev/null +++ b/students/23K0623/23K0623-p021/src/main/java/ru/mirea/practice/s23k0623/prog3/AllType.java @@ -0,0 +1,24 @@ +package ru.mirea.practice.s23k0623.prog3; + +import java.util.Arrays; + +public class AllType { + private T[] array; + + public AllType(T[] array) { + this.array = array; + } + + public T getElement(int index) { + if (index >= 0 && index < array.length) { + return array[index]; + } else { + throw new IndexOutOfBoundsException("Index is out of bounds"); + } + } + + @Override + public String toString() { + return Arrays.toString(array); + } +} diff --git a/students/23K0623/23K0623-p021/src/main/java/ru/mirea/practice/s23k0623/prog3/Main.java b/students/23K0623/23K0623-p021/src/main/java/ru/mirea/practice/s23k0623/prog3/Main.java new file mode 100644 index 000000000..a06c41005 --- /dev/null +++ b/students/23K0623/23K0623-p021/src/main/java/ru/mirea/practice/s23k0623/prog3/Main.java @@ -0,0 +1,11 @@ +package ru.mirea.practice.s23k0623.prog3; + +public abstract class Main { + public static void main(String[] args) { + AllType intAllType = new AllType<>(new Integer[]{1, 2, 3, 4, 5}); + System.out.println("Integer array: " + intAllType); + + AllType stringAllType = new AllType<>(new String[]{"apple", "banana", "cherry"}); + System.out.println("String array: " + stringAllType); + } +} diff --git a/students/23K0623/23K0623-p022/pom.xml b/students/23K0623/23K0623-p022/pom.xml new file mode 100644 index 000000000..9346ccc42 --- /dev/null +++ b/students/23K0623/23K0623-p022/pom.xml @@ -0,0 +1,13 @@ + + + 4.0.0 + + 23K0623 + ru.mirea.practice + 2024.1 + ../pom.xml + + 23K0623-p022 + Массивы + diff --git a/students/23K0623/23K0623-p022/src/main/java/ru/mirea/practice/s23k0623/Main.java b/students/23K0623/23K0623-p022/src/main/java/ru/mirea/practice/s23k0623/Main.java new file mode 100644 index 000000000..1547e24fe --- /dev/null +++ b/students/23K0623/23K0623-p022/src/main/java/ru/mirea/practice/s23k0623/Main.java @@ -0,0 +1,51 @@ +package ru.mirea.practice.s23k0623; + +import java.util.Stack; + +public abstract class Main { + public static double evaluateRpn(String expression) { + Stack stack = new Stack<>(); + String[] tokens = expression.split("\\s+"); // Разделяем выражение по пробелам + + for (String token : tokens) { + switch (token) { + case "+": + stack.push(stack.pop() + stack.pop()); + break; + case "-": + double subtrahend = stack.pop(); + stack.push(stack.pop() - subtrahend); + break; + case "*": + stack.push(stack.pop() * stack.pop()); + break; + case "/": + double divisor = stack.pop(); + if (divisor == 0) { + throw new ArithmeticException("Деление на ноль."); + } + stack.push(stack.pop() / divisor); + break; + default: + stack.push(Double.parseDouble(token)); + break; + } + } + + if (stack.size() != 1) { + throw new IllegalArgumentException("Некорректное выражение."); + } + + return stack.pop(); + } + + public static void main(String[] args) { + String expression = "3 4 + 2 * 7 /"; + try { + double result = evaluateRpn(expression); + System.out.println("Результат: " + result); + } catch (Exception e) { + System.out.println("Ошибка: " + e.getMessage()); + } + } +} diff --git a/students/23K0623/23K0623-p022/src/main/java/ru/mirea/practice/s23k0623/prog2/CalculatorController.java b/students/23K0623/23K0623-p022/src/main/java/ru/mirea/practice/s23k0623/prog2/CalculatorController.java new file mode 100644 index 000000000..9014da33d --- /dev/null +++ b/students/23K0623/23K0623-p022/src/main/java/ru/mirea/practice/s23k0623/prog2/CalculatorController.java @@ -0,0 +1,22 @@ +package ru.mirea.practice.s23k0623.prog2; + +import java.awt.event.ActionEvent; +import java.awt.event.ActionListener; + +// Controller +class CalculatorController implements ActionListener { + private CalculatorView view; + private CalculatorModel model; + + public CalculatorController(CalculatorView view, CalculatorModel model) { + this.view = view; + this.model = model; + } + + @Override + public void actionPerformed(ActionEvent e) { + String expression = view.getInputExpression(); + String result = model.evaluateRpn(expression); + view.setResult(result); + } +} diff --git a/students/23K0623/23K0623-p022/src/main/java/ru/mirea/practice/s23k0623/prog2/CalculatorModel.java b/students/23K0623/23K0623-p022/src/main/java/ru/mirea/practice/s23k0623/prog2/CalculatorModel.java new file mode 100644 index 000000000..3ed07326a --- /dev/null +++ b/students/23K0623/23K0623-p022/src/main/java/ru/mirea/practice/s23k0623/prog2/CalculatorModel.java @@ -0,0 +1,44 @@ +package ru.mirea.practice.s23k0623.prog2; + +import java.util.Stack; + +// Model +class CalculatorModel { + public String evaluateRpn(String expression) { + Stack stack = new Stack<>(); + String[] tokens = expression.split("\\s+"); + + try { + for (String token : tokens) { + switch (token) { + case "+": + stack.push(stack.pop() + stack.pop()); + break; + case "-": + double subtrahend = stack.pop(); + stack.push(stack.pop() - subtrahend); + break; + case "*": + stack.push(stack.pop() * stack.pop()); + break; + case "/": + double divisor = stack.pop(); + if (divisor == 0) { + return "Ошибка: деление на ноль."; + } + stack.push(stack.pop() / divisor); + break; + default: + stack.push(Double.parseDouble(token)); + break; + } + } + if (stack.size() != 1) { + return "Ошибка: неверное выражение."; + } + return "Результат: " + stack.pop(); + } catch (Exception e) { + return "Ошибка: неверное выражение или операция для пустого стека."; + } + } +} diff --git a/students/23K0623/23K0623-p022/src/main/java/ru/mirea/practice/s23k0623/prog2/CalculatorView.java b/students/23K0623/23K0623-p022/src/main/java/ru/mirea/practice/s23k0623/prog2/CalculatorView.java new file mode 100644 index 000000000..718f6d853 --- /dev/null +++ b/students/23K0623/23K0623-p022/src/main/java/ru/mirea/practice/s23k0623/prog2/CalculatorView.java @@ -0,0 +1,52 @@ +package ru.mirea.practice.s23k0623.prog2; + +import javax.swing.JButton; +import javax.swing.JFrame; +import javax.swing.JLabel; +import javax.swing.JPanel; +import javax.swing.JScrollPane; +import javax.swing.JTextArea; +import javax.swing.JTextField; +import java.awt.BorderLayout; + +// View +class CalculatorView { + private JTextField inputField; + private JTextArea resultArea; + @SuppressWarnings("PMD.SingularField") + private JButton calculateButton; + + + public CalculatorView() { + inputField = new JTextField(20); + resultArea = new JTextArea(5, 20); + resultArea.setEditable(false); + calculateButton = new JButton("Вычислить"); + + JFrame frame = new JFrame("RPN Calculator"); + frame.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE); + + JPanel panel = new JPanel(); + panel.setLayout(new BorderLayout()); + panel.add(new JLabel("Введите выражение в ОПН:"), BorderLayout.NORTH); + panel.add(inputField, BorderLayout.CENTER); + panel.add(calculateButton, BorderLayout.EAST); + panel.add(new JScrollPane(resultArea), BorderLayout.SOUTH); + + frame.getContentPane().add(panel); + frame.pack(); + frame.setLocationRelativeTo(null); + frame.setVisible(true); + + CalculatorController controller = new CalculatorController(this, new CalculatorModel()); // Создаём controller локально + calculateButton.addActionListener(controller); + } + + public String getInputExpression() { + return inputField.getText(); + } + + public void setResult(String result) { + resultArea.setText(result); + } +} diff --git a/students/23K0623/23K0623-p022/src/main/java/ru/mirea/practice/s23k0623/prog2/Main.java b/students/23K0623/23K0623-p022/src/main/java/ru/mirea/practice/s23k0623/prog2/Main.java new file mode 100644 index 000000000..c965b1dae --- /dev/null +++ b/students/23K0623/23K0623-p022/src/main/java/ru/mirea/practice/s23k0623/prog2/Main.java @@ -0,0 +1,9 @@ +package ru.mirea.practice.s23k0623.prog2; + +import javax.swing.SwingUtilities; + +public abstract class Main { + public static void main(String[] args) { + SwingUtilities.invokeLater(CalculatorView::new); + } +} diff --git a/students/23K0623/23K0623-p022/src/main/java/ru/mirea/practice/s23k0623/prog2/Tests.java b/students/23K0623/23K0623-p022/src/main/java/ru/mirea/practice/s23k0623/prog2/Tests.java new file mode 100644 index 000000000..75558a656 --- /dev/null +++ b/students/23K0623/23K0623-p022/src/main/java/ru/mirea/practice/s23k0623/prog2/Tests.java @@ -0,0 +1,18 @@ +package ru.mirea.practice.s23k0623.prog2; + +public abstract class Tests { + public static void main(String[] args) { + CalculatorModel model = new CalculatorModel(); + + assert "Результат: 7.0".equals(model.evaluateRpn("3 4 +")); + assert "Результат: 14.0".equals(model.evaluateRpn("5 1 2 + 4 * + 3 -")); + + assert "Ошибка: неверное выражение.".equals(model.evaluateRpn("3 +")); + + assert "Ошибка: деление на ноль.".equals(model.evaluateRpn("4 0 /")); + + assert "Ошибка: неверное выражение или операция для пустого стека.".equals(model.evaluateRpn("1 2 + *")); + + System.out.println("Все тесты пройдены."); + } +} diff --git a/students/23K0623/23K0623-p023/pom.xml b/students/23K0623/23K0623-p023/pom.xml new file mode 100644 index 000000000..b75206d2b --- /dev/null +++ b/students/23K0623/23K0623-p023/pom.xml @@ -0,0 +1,13 @@ + + + 4.0.0 + + 23K0623 + ru.mirea.practice + 2024.1 + ../pom.xml + + 23K0623-p023 + Массивы + diff --git a/students/23K0623/23K0623-p023/src/main/java/ru/mirea/practice/s23k0623/prog2/AbstractQueue.java b/students/23K0623/23K0623-p023/src/main/java/ru/mirea/practice/s23k0623/prog2/AbstractQueue.java new file mode 100644 index 000000000..03279adf0 --- /dev/null +++ b/students/23K0623/23K0623-p023/src/main/java/ru/mirea/practice/s23k0623/prog2/AbstractQueue.java @@ -0,0 +1,29 @@ +package ru.mirea.practice.s23k0623.prog2; + +public abstract class AbstractQueue implements Queue { + protected int size = 0; + + @Override + public int size() { + return size; + } + + @Override + public boolean isEmpty() { + return size == 0; + } + + @Override + public void clear() { + size = 0; + } + + @Override + public abstract void enqueue(T element); + + @Override + public abstract T dequeue(); + + @Override + public abstract T element(); +} diff --git a/students/23K0623/23K0623-p023/src/main/java/ru/mirea/practice/s23k0623/prog2/ArrayQueue.java b/students/23K0623/23K0623-p023/src/main/java/ru/mirea/practice/s23k0623/prog2/ArrayQueue.java new file mode 100644 index 000000000..10e15a918 --- /dev/null +++ b/students/23K0623/23K0623-p023/src/main/java/ru/mirea/practice/s23k0623/prog2/ArrayQueue.java @@ -0,0 +1,56 @@ +package ru.mirea.practice.s23k0623.prog2; + +public class ArrayQueue extends AbstractQueue { + private T[] array; + private int head = 0; + private int tail = 0; + + @SuppressWarnings("unchecked") + public ArrayQueue() { + array = (T[]) new Object[10]; + } + + @Override + public void enqueue(T element) { + if (element == null) { + throw new IllegalArgumentException("Element cannot be null"); + } + ensureCapacity(); + array[tail] = element; + tail = (tail + 1) % array.length; + size++; + } + + @Override + public T element() { + if (isEmpty()) { + throw new IllegalStateException("Queue is empty"); + } + return array[head]; + } + + @Override + public T dequeue() { + if (isEmpty()) { + throw new IllegalStateException("Queue is empty"); + } + final T result = array[head]; + array[head] = null; + head = (head + 1) % array.length; + size--; + return result; + } + + @SuppressWarnings("unchecked") + private void ensureCapacity() { + if (size == array.length) { + T[] newArray = (T[]) new Object[array.length * 2]; + for (int i = 0; i < size; i++) { + newArray[i] = array[(head + i) % array.length]; + } + array = newArray; + head = 0; + tail = size; + } + } +} diff --git a/students/23K0623/23K0623-p023/src/main/java/ru/mirea/practice/s23k0623/prog2/LinkedQueue.java b/students/23K0623/23K0623-p023/src/main/java/ru/mirea/practice/s23k0623/prog2/LinkedQueue.java new file mode 100644 index 000000000..1a5bb8996 --- /dev/null +++ b/students/23K0623/23K0623-p023/src/main/java/ru/mirea/practice/s23k0623/prog2/LinkedQueue.java @@ -0,0 +1,71 @@ +package ru.mirea.practice.s23k0623.prog2; + +public class LinkedQueue implements Queue { + private static class Node { + T data; + Node next; + + Node(T data) { + this.data = data; + } + } + + private Node head; + private Node tail; + private int size = 0; + + @Override + public void enqueue(T element) { + if (element == null) { + throw new NullPointerException("Element cannot be null"); + } + Node newNode = new Node<>(element); + if (tail != null) { + tail.next = newNode; + } + tail = newNode; + if (head == null) { + head = tail; + } + size++; + } + + @Override + public T element() { + if (isEmpty()) { + throw new IllegalStateException("Queue is empty"); + } + return head.data; + } + + @Override + public T dequeue() { + if (isEmpty()) { + throw new IllegalStateException("Queue is empty"); + } + final T result = head.data; + head = head.next; + if (head == null) { + tail = null; + } + size--; + return result; + } + + @Override + public int size() { + return size; + } + + @Override + public boolean isEmpty() { + return size == 0; + } + + @Override + public void clear() { + head = null; + tail = null; + size = 0; + } +} diff --git a/students/23K0623/23K0623-p023/src/main/java/ru/mirea/practice/s23k0623/prog2/Queue.java b/students/23K0623/23K0623-p023/src/main/java/ru/mirea/practice/s23k0623/prog2/Queue.java new file mode 100644 index 000000000..0c7a940d0 --- /dev/null +++ b/students/23K0623/23K0623-p023/src/main/java/ru/mirea/practice/s23k0623/prog2/Queue.java @@ -0,0 +1,15 @@ +package ru.mirea.practice.s23k0623.prog2; + +public interface Queue { + void enqueue(T element); + + T element(); + + T dequeue(); + + int size(); + + boolean isEmpty(); + + void clear(); +} diff --git a/students/23K0623/23K0623-p023/src/main/java/ru/mirea/practice/s23k0623/prog2/Test.java b/students/23K0623/23K0623-p023/src/main/java/ru/mirea/practice/s23k0623/prog2/Test.java new file mode 100644 index 000000000..186bbe7a0 --- /dev/null +++ b/students/23K0623/23K0623-p023/src/main/java/ru/mirea/practice/s23k0623/prog2/Test.java @@ -0,0 +1,27 @@ +package ru.mirea.practice.s23k0623.prog2; + + +public abstract class Test { + public static void main(String[] args) { + arrayQueueTest(); + } + + static void arrayQueueTest() { + ArrayQueue queue = new ArrayQueue(); + queue.enqueue(1); + queue.enqueue(2); + System.out.println(queue.dequeue()); // 1 + System.out.println(queue.size()); // 1 + System.out.println(queue.isEmpty()); // false + queue.clear(); + System.out.println(queue.isEmpty()); // true + } + + static void testLinkesQueue() { + LinkedQueue queue = new LinkedQueue(); + queue.enqueue(1); + queue.enqueue(2); + System.out.println(queue.dequeue()); // 1 + System.out.println(queue.size()); // 1 + } +} diff --git a/students/23K0623/23K0623-p023/src/main/java/ru/mirea/practice/s23k0623/prog3/Add.java b/students/23K0623/23K0623-p023/src/main/java/ru/mirea/practice/s23k0623/prog3/Add.java new file mode 100644 index 000000000..7a62140d8 --- /dev/null +++ b/students/23K0623/23K0623-p023/src/main/java/ru/mirea/practice/s23k0623/prog3/Add.java @@ -0,0 +1,12 @@ +package ru.mirea.practice.s23k0623.prog3; + +class Add extends BinaryOperation { + public Add(Expression left, Expression right) { + super(left, right); + } + + @Override + public double evaluate(double x) { + return left.evaluate(x) + right.evaluate(x); + } +} diff --git a/students/23K0623/23K0623-p023/src/main/java/ru/mirea/practice/s23k0623/prog3/BinaryOperation.java b/students/23K0623/23K0623-p023/src/main/java/ru/mirea/practice/s23k0623/prog3/BinaryOperation.java new file mode 100644 index 000000000..3561423fb --- /dev/null +++ b/students/23K0623/23K0623-p023/src/main/java/ru/mirea/practice/s23k0623/prog3/BinaryOperation.java @@ -0,0 +1,11 @@ +package ru.mirea.practice.s23k0623.prog3; + +abstract class BinaryOperation implements Expression { + protected final Expression left; + protected final Expression right; + + public BinaryOperation(Expression left, Expression right) { + this.left = left; + this.right = right; + } +} diff --git a/students/23K0623/23K0623-p023/src/main/java/ru/mirea/practice/s23k0623/prog3/Const.java b/students/23K0623/23K0623-p023/src/main/java/ru/mirea/practice/s23k0623/prog3/Const.java new file mode 100644 index 000000000..93c9fef79 --- /dev/null +++ b/students/23K0623/23K0623-p023/src/main/java/ru/mirea/practice/s23k0623/prog3/Const.java @@ -0,0 +1,14 @@ +package ru.mirea.practice.s23k0623.prog3; + +class Const implements Expression { + private final double value; + + public Const(double value) { + this.value = value; + } + + @Override + public double evaluate(double x) { + return value; + } +} diff --git a/students/23K0623/23K0623-p023/src/main/java/ru/mirea/practice/s23k0623/prog3/Divide.java b/students/23K0623/23K0623-p023/src/main/java/ru/mirea/practice/s23k0623/prog3/Divide.java new file mode 100644 index 000000000..7ad256e9c --- /dev/null +++ b/students/23K0623/23K0623-p023/src/main/java/ru/mirea/practice/s23k0623/prog3/Divide.java @@ -0,0 +1,12 @@ +package ru.mirea.practice.s23k0623.prog3; + +class Divide extends BinaryOperation { + public Divide(Expression left, Expression right) { + super(left, right); + } + + @Override + public double evaluate(double x) { + return left.evaluate(x) / right.evaluate(x); + } +} diff --git a/students/23K0623/23K0623-p023/src/main/java/ru/mirea/practice/s23k0623/prog3/Expression.java b/students/23K0623/23K0623-p023/src/main/java/ru/mirea/practice/s23k0623/prog3/Expression.java new file mode 100644 index 000000000..eb3193879 --- /dev/null +++ b/students/23K0623/23K0623-p023/src/main/java/ru/mirea/practice/s23k0623/prog3/Expression.java @@ -0,0 +1,5 @@ +package ru.mirea.practice.s23k0623.prog3; + +interface Expression { + double evaluate(double x); +} diff --git a/students/23K0623/23K0623-p023/src/main/java/ru/mirea/practice/s23k0623/prog3/Main.java b/students/23K0623/23K0623-p023/src/main/java/ru/mirea/practice/s23k0623/prog3/Main.java new file mode 100644 index 000000000..b201092a6 --- /dev/null +++ b/students/23K0623/23K0623-p023/src/main/java/ru/mirea/practice/s23k0623/prog3/Main.java @@ -0,0 +1,31 @@ +package ru.mirea.practice.s23k0623.prog3; + +public abstract class Main { + public static void main(String[] args) { + if (args.length < 1) { + System.out.println("Введите значение x, значение по умолчанию х = 1"); + + } + + try { + double x; + if (args.length < 1) { + x = 1; + } else { + x = Double.parseDouble(args[0]); + } + Expression expr = new Add( + new Subtract( + new Multiply(new Variable("x"), new Variable("x")), + new Multiply(new Const(2), new Variable("x")) + ), + new Const(1) + ); + + double result = expr.evaluate(x); + System.out.println("Результат: " + result); + } catch (NumberFormatException e) { + System.out.println("Некорректный ввод: введите числовое значение для x."); + } + } +} diff --git a/students/23K0623/23K0623-p023/src/main/java/ru/mirea/practice/s23k0623/prog3/Multiply.java b/students/23K0623/23K0623-p023/src/main/java/ru/mirea/practice/s23k0623/prog3/Multiply.java new file mode 100644 index 000000000..c0d7a4c97 --- /dev/null +++ b/students/23K0623/23K0623-p023/src/main/java/ru/mirea/practice/s23k0623/prog3/Multiply.java @@ -0,0 +1,12 @@ +package ru.mirea.practice.s23k0623.prog3; + +class Multiply extends BinaryOperation { + public Multiply(Expression left, Expression right) { + super(left, right); + } + + @Override + public double evaluate(double x) { + return left.evaluate(x) * right.evaluate(x); + } +} diff --git a/students/23K0623/23K0623-p023/src/main/java/ru/mirea/practice/s23k0623/prog3/Subtract.java b/students/23K0623/23K0623-p023/src/main/java/ru/mirea/practice/s23k0623/prog3/Subtract.java new file mode 100644 index 000000000..b5ad283dc --- /dev/null +++ b/students/23K0623/23K0623-p023/src/main/java/ru/mirea/practice/s23k0623/prog3/Subtract.java @@ -0,0 +1,12 @@ +package ru.mirea.practice.s23k0623.prog3; + +class Subtract extends BinaryOperation { + public Subtract(Expression left, Expression right) { + super(left, right); + } + + @Override + public double evaluate(double x) { + return left.evaluate(x) - right.evaluate(x); + } +} diff --git a/students/23K0623/23K0623-p023/src/main/java/ru/mirea/practice/s23k0623/prog3/Variable.java b/students/23K0623/23K0623-p023/src/main/java/ru/mirea/practice/s23k0623/prog3/Variable.java new file mode 100644 index 000000000..12a2a7719 --- /dev/null +++ b/students/23K0623/23K0623-p023/src/main/java/ru/mirea/practice/s23k0623/prog3/Variable.java @@ -0,0 +1,15 @@ +package ru.mirea.practice.s23k0623.prog3; + +class Variable implements Expression { + @SuppressWarnings("PMD.SingularField") + private final String name; + + public Variable(String name) { + this.name = name; + } + + @Override + public double evaluate(double x) { + return x; + } +} diff --git a/students/23K0623/23K0623-p023/src/main/java/ru/mirea/practice/s23k0623/prog4/Add.java b/students/23K0623/23K0623-p023/src/main/java/ru/mirea/practice/s23k0623/prog4/Add.java new file mode 100644 index 000000000..c88e82f8a --- /dev/null +++ b/students/23K0623/23K0623-p023/src/main/java/ru/mirea/practice/s23k0623/prog4/Add.java @@ -0,0 +1,18 @@ +package ru.mirea.practice.s23k0623.prog4; + +class Add extends BinaryOperation { + public Add(TripleExpression left, TripleExpression right) { + super(left, right); + } + + @Override + public int evaluate(int x, int y, int z) throws EvaluationException { + int leftValue = left.evaluate(x, y, z); + int rightValue = right.evaluate(x, y, z); + if (rightValue > 0 && leftValue > Integer.MAX_VALUE - rightValue + || rightValue < 0 && leftValue < Integer.MIN_VALUE - rightValue) { + throw new EvaluationException("overflow"); + } + return leftValue + rightValue; + } +} diff --git a/students/23K0623/23K0623-p023/src/main/java/ru/mirea/practice/s23k0623/prog4/BinaryOperation.java b/students/23K0623/23K0623-p023/src/main/java/ru/mirea/practice/s23k0623/prog4/BinaryOperation.java new file mode 100644 index 000000000..82c4be3b7 --- /dev/null +++ b/students/23K0623/23K0623-p023/src/main/java/ru/mirea/practice/s23k0623/prog4/BinaryOperation.java @@ -0,0 +1,11 @@ +package ru.mirea.practice.s23k0623.prog4; + +abstract class BinaryOperation implements TripleExpression { + protected final TripleExpression left; + protected final TripleExpression right; + + public BinaryOperation(TripleExpression left, TripleExpression right) { + this.left = left; + this.right = right; + } +} diff --git a/students/23K0623/23K0623-p023/src/main/java/ru/mirea/practice/s23k0623/prog4/Const.java b/students/23K0623/23K0623-p023/src/main/java/ru/mirea/practice/s23k0623/prog4/Const.java new file mode 100644 index 000000000..97592ce59 --- /dev/null +++ b/students/23K0623/23K0623-p023/src/main/java/ru/mirea/practice/s23k0623/prog4/Const.java @@ -0,0 +1,14 @@ +package ru.mirea.practice.s23k0623.prog4; + +class Const implements TripleExpression { + private final int value; + + public Const(int value) { + this.value = value; + } + + @Override + public int evaluate(int x, int y, int z) { + return value; + } +} diff --git a/students/23K0623/23K0623-p023/src/main/java/ru/mirea/practice/s23k0623/prog4/Divide.java b/students/23K0623/23K0623-p023/src/main/java/ru/mirea/practice/s23k0623/prog4/Divide.java new file mode 100644 index 000000000..718eb5e59 --- /dev/null +++ b/students/23K0623/23K0623-p023/src/main/java/ru/mirea/practice/s23k0623/prog4/Divide.java @@ -0,0 +1,20 @@ +package ru.mirea.practice.s23k0623.prog4; + +class Divide extends BinaryOperation { + public Divide(TripleExpression left, TripleExpression right) { + super(left, right); + } + + @Override + public int evaluate(int x, int y, int z) throws EvaluationException { + int leftValue = left.evaluate(x, y, z); + int rightValue = right.evaluate(x, y, z); + if (rightValue == 0) { + throw new EvaluationException("division by zero"); + } + if (leftValue == Integer.MIN_VALUE && rightValue == -1) { + throw new EvaluationException("overflow"); + } + return leftValue / rightValue; + } +} diff --git a/students/23K0623/23K0623-p023/src/main/java/ru/mirea/practice/s23k0623/prog4/EvaluationException.java b/students/23K0623/23K0623-p023/src/main/java/ru/mirea/practice/s23k0623/prog4/EvaluationException.java new file mode 100644 index 000000000..d0b13aab3 --- /dev/null +++ b/students/23K0623/23K0623-p023/src/main/java/ru/mirea/practice/s23k0623/prog4/EvaluationException.java @@ -0,0 +1,7 @@ +package ru.mirea.practice.s23k0623.prog4; + +class EvaluationException extends Exception { + public EvaluationException(String message) { + super(message); + } +} diff --git a/students/23K0623/23K0623-p023/src/main/java/ru/mirea/practice/s23k0623/prog4/ExpressionParser.java b/students/23K0623/23K0623-p023/src/main/java/ru/mirea/practice/s23k0623/prog4/ExpressionParser.java new file mode 100644 index 000000000..5c730c0c4 --- /dev/null +++ b/students/23K0623/23K0623-p023/src/main/java/ru/mirea/practice/s23k0623/prog4/ExpressionParser.java @@ -0,0 +1,73 @@ +package ru.mirea.practice.s23k0623.prog4; + +class ExpressionParser { + private String expression; + private int index; + + public TripleExpression parse(String expression) { + this.expression = expression.replaceAll("\\s+", ""); + this.index = 0; + return parseExpression(); + } + + private TripleExpression parseExpression() { + TripleExpression result = parseTerm(); + while (index < expression.length()) { + char operator = expression.charAt(index); + if (operator == '+' || operator == '-') { + index++; + TripleExpression right = parseTerm(); + result = (operator == '+') ? new Add(result, right) : new Subtract(result, right); + } else { + break; + } + } + return result; + } + + private TripleExpression parseTerm() { + TripleExpression result = parseFactor(); + while (index < expression.length()) { + char operator = expression.charAt(index); + if (operator == '*' || operator == '/') { + index++; + TripleExpression right = parseFactor(); + result = (operator == '*') ? new Multiply(result, right) : new Divide(result, right); + } else { + break; + } + } + return result; + } + + private TripleExpression parseFactor() { + if (expression.charAt(index) == '-') { + index++; + return new Negate(parseFactor()); + } else if (expression.charAt(index) == '(') { + index++; + TripleExpression result = parseExpression(); + if (expression.charAt(index) == ')') { + index++; + } else { + throw new IllegalArgumentException("Expected closing parenthesis"); + } + return result; + } else if (Character.isDigit(expression.charAt(index))) { + int start = index; + while (index < expression.length() && Character.isDigit(expression.charAt(index))) { + index++; + } + int value = Integer.parseInt(expression.substring(start, index)); + return new Const(value); + } else if (Character.isLetter(expression.charAt(index))) { + StringBuilder varName = new StringBuilder(); + while (index < expression.length() && Character.isLetter(expression.charAt(index))) { + varName.append(expression.charAt(index++)); + } + return new Variable(varName.toString()); + } else { + throw new IllegalArgumentException("Unexpected character: " + expression.charAt(index)); + } + } +} diff --git a/students/23K0623/23K0623-p023/src/main/java/ru/mirea/practice/s23k0623/prog4/Main.java b/students/23K0623/23K0623-p023/src/main/java/ru/mirea/practice/s23k0623/prog4/Main.java new file mode 100644 index 000000000..0d9cf6005 --- /dev/null +++ b/students/23K0623/23K0623-p023/src/main/java/ru/mirea/practice/s23k0623/prog4/Main.java @@ -0,0 +1,17 @@ +package ru.mirea.practice.s23k0623.prog4; + +public abstract class Main { + public static void main(String[] args) { + ExpressionParser parser = new ExpressionParser(); + TripleExpression expression = parser.parse("1000000 * x * x * x * x * x / (x - 1)"); + + for (int x = 0; x <= 10; x++) { + try { + int result = expression.evaluate(x, 0, 0); + System.out.println(x + " " + result); + } catch (EvaluationException e) { + System.out.println(x + " " + e.getMessage()); + } + } + } +} diff --git a/students/23K0623/23K0623-p023/src/main/java/ru/mirea/practice/s23k0623/prog4/Multiply.java b/students/23K0623/23K0623-p023/src/main/java/ru/mirea/practice/s23k0623/prog4/Multiply.java new file mode 100644 index 000000000..f2dd343f8 --- /dev/null +++ b/students/23K0623/23K0623-p023/src/main/java/ru/mirea/practice/s23k0623/prog4/Multiply.java @@ -0,0 +1,20 @@ +package ru.mirea.practice.s23k0623.prog4; + +class Multiply extends BinaryOperation { + public Multiply(TripleExpression left, TripleExpression right) { + super(left, right); + } + + @Override + public int evaluate(int x, int y, int z) throws EvaluationException { + int leftValue = left.evaluate(x, y, z); + int rightValue = right.evaluate(x, y, z); + if (leftValue > 0 && rightValue > 0 && leftValue > Integer.MAX_VALUE / rightValue + || leftValue > 0 && rightValue < 0 && rightValue < Integer.MIN_VALUE / leftValue + || leftValue < 0 && rightValue > 0 && leftValue < Integer.MIN_VALUE / rightValue + || leftValue < 0 && rightValue < 0 && leftValue < Integer.MAX_VALUE / rightValue) { + throw new EvaluationException("overflow"); + } + return leftValue * rightValue; + } +} diff --git a/students/23K0623/23K0623-p023/src/main/java/ru/mirea/practice/s23k0623/prog4/Negate.java b/students/23K0623/23K0623-p023/src/main/java/ru/mirea/practice/s23k0623/prog4/Negate.java new file mode 100644 index 000000000..f857b46f0 --- /dev/null +++ b/students/23K0623/23K0623-p023/src/main/java/ru/mirea/practice/s23k0623/prog4/Negate.java @@ -0,0 +1,18 @@ +package ru.mirea.practice.s23k0623.prog4; + +class Negate implements TripleExpression { + private final TripleExpression expression; + + public Negate(TripleExpression expression) { + this.expression = expression; + } + + @Override + public int evaluate(int x, int y, int z) throws EvaluationException { + int value = expression.evaluate(x, y, z); + if (value == Integer.MIN_VALUE) { + throw new EvaluationException("overflow"); + } + return -value; + } +} diff --git a/students/23K0623/23K0623-p023/src/main/java/ru/mirea/practice/s23k0623/prog4/Subtract.java b/students/23K0623/23K0623-p023/src/main/java/ru/mirea/practice/s23k0623/prog4/Subtract.java new file mode 100644 index 000000000..9c800a7b3 --- /dev/null +++ b/students/23K0623/23K0623-p023/src/main/java/ru/mirea/practice/s23k0623/prog4/Subtract.java @@ -0,0 +1,18 @@ +package ru.mirea.practice.s23k0623.prog4; + +class Subtract extends BinaryOperation { + public Subtract(TripleExpression left, TripleExpression right) { + super(left, right); + } + + @Override + public int evaluate(int x, int y, int z) throws EvaluationException { + int leftValue = left.evaluate(x, y, z); + int rightValue = right.evaluate(x, y, z); + if (rightValue < 0 && leftValue > Integer.MAX_VALUE + rightValue + || rightValue > 0 && leftValue < Integer.MIN_VALUE + rightValue) { + throw new EvaluationException("overflow"); + } + return leftValue - rightValue; + } +} diff --git a/students/23K0623/23K0623-p023/src/main/java/ru/mirea/practice/s23k0623/prog4/TripleExpression.java b/students/23K0623/23K0623-p023/src/main/java/ru/mirea/practice/s23k0623/prog4/TripleExpression.java new file mode 100644 index 000000000..12eb14d1a --- /dev/null +++ b/students/23K0623/23K0623-p023/src/main/java/ru/mirea/practice/s23k0623/prog4/TripleExpression.java @@ -0,0 +1,5 @@ +package ru.mirea.practice.s23k0623.prog4; + +interface TripleExpression { + int evaluate(int x, int y, int z) throws EvaluationException; +} diff --git a/students/23K0623/23K0623-p023/src/main/java/ru/mirea/practice/s23k0623/prog4/Variable.java b/students/23K0623/23K0623-p023/src/main/java/ru/mirea/practice/s23k0623/prog4/Variable.java new file mode 100644 index 000000000..f7b4df34c --- /dev/null +++ b/students/23K0623/23K0623-p023/src/main/java/ru/mirea/practice/s23k0623/prog4/Variable.java @@ -0,0 +1,28 @@ +package ru.mirea.practice.s23k0623.prog4; + +class Variable implements TripleExpression { + private final String name; + + public Variable(String name) { + this.name = name; + } + + @Override + public int evaluate(int x, int y, int z) { + int result; + switch (name) { + case "x": + result = x; + break; + case "y": + result = y; + break; + case "z": + result = z; + break; + default: + throw new IllegalArgumentException("Unknown variable: " + name); + } + return result; + } +} diff --git a/students/23K0623/23K0623-p024/pom.xml b/students/23K0623/23K0623-p024/pom.xml new file mode 100644 index 000000000..5e3f332b8 --- /dev/null +++ b/students/23K0623/23K0623-p024/pom.xml @@ -0,0 +1,13 @@ + + + 4.0.0 + + 23K0623 + ru.mirea.practice + 2024.1 + ../pom.xml + + 23K0623-p024 + Массивы + diff --git a/students/23K0623/23K0623-p024/src/main/java/ru/mirea/practice/s23k0623/Complex.java b/students/23K0623/23K0623-p024/src/main/java/ru/mirea/practice/s23k0623/Complex.java new file mode 100644 index 000000000..1c4045eab --- /dev/null +++ b/students/23K0623/23K0623-p024/src/main/java/ru/mirea/practice/s23k0623/Complex.java @@ -0,0 +1,25 @@ +package ru.mirea.practice.s23k0623; + +public class Complex { + private int real; + private int imaginary; + + public Complex(int real, int imaginary) { + this.real = real; + this.imaginary = imaginary; + } + + public int getReal() { + return real; + } + + public int getImaginary() { + return imaginary; + } + + @Override + public String toString() { + return real + " + " + imaginary + "i"; + } +} + diff --git a/students/23K0623/23K0623-p024/src/main/java/ru/mirea/practice/s23k0623/ComplexAbstractFactory.java b/students/23K0623/23K0623-p024/src/main/java/ru/mirea/practice/s23k0623/ComplexAbstractFactory.java new file mode 100644 index 000000000..0f0d9ce2f --- /dev/null +++ b/students/23K0623/23K0623-p024/src/main/java/ru/mirea/practice/s23k0623/ComplexAbstractFactory.java @@ -0,0 +1,9 @@ +package ru.mirea.practice.s23k0623; + +public interface ComplexAbstractFactory { + + Complex createComplex(); + + Complex createComplex(int real, int imaginary); +} + diff --git a/students/23K0623/23K0623-p024/src/main/java/ru/mirea/practice/s23k0623/ConcreteFactory.java b/students/23K0623/23K0623-p024/src/main/java/ru/mirea/practice/s23k0623/ConcreteFactory.java new file mode 100644 index 000000000..65b536bfa --- /dev/null +++ b/students/23K0623/23K0623-p024/src/main/java/ru/mirea/practice/s23k0623/ConcreteFactory.java @@ -0,0 +1,14 @@ +package ru.mirea.practice.s23k0623; + +public class ConcreteFactory implements ComplexAbstractFactory { + + @Override + public Complex createComplex() { + return new Complex(0, 0); + } + + @Override + public Complex createComplex(int real, int imaginary) { + return new Complex(real, imaginary); + } +} diff --git a/students/23K0623/23K0623-p024/src/main/java/ru/mirea/practice/s23k0623/Test.java b/students/23K0623/23K0623-p024/src/main/java/ru/mirea/practice/s23k0623/Test.java new file mode 100644 index 000000000..3a9ede092 --- /dev/null +++ b/students/23K0623/23K0623-p024/src/main/java/ru/mirea/practice/s23k0623/Test.java @@ -0,0 +1,14 @@ +package ru.mirea.practice.s23k0623; + +public abstract class Test { + 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(7, 2); + System.out.println("Custom complex number: " + customComplex); + } +} + diff --git a/students/23K0623/23K0623-p025/pom.xml b/students/23K0623/23K0623-p025/pom.xml new file mode 100644 index 000000000..ab8eff802 --- /dev/null +++ b/students/23K0623/23K0623-p025/pom.xml @@ -0,0 +1,13 @@ + + + 4.0.0 + + 23K0623 + ru.mirea.practice + 2024.1 + ../pom.xml + + 23K0623-p025 + Массивы + diff --git a/students/23K0623/23K0623-p025/src/main/java/ru/mirea/practice/s23k0623/Main.java b/students/23K0623/23K0623-p025/src/main/java/ru/mirea/practice/s23k0623/Main.java new file mode 100644 index 000000000..2efbaad67 --- /dev/null +++ b/students/23K0623/23K0623-p025/src/main/java/ru/mirea/practice/s23k0623/Main.java @@ -0,0 +1,12 @@ +package ru.mirea.practice.s23k0623; + +public final class Main { + + private Main() { + + } + + public static void main(String[] args) { + System.out.println("Двадцать пятая практическая работа!"); + } +} diff --git a/students/23K0623/23K0623-p025/src/main/java/ru/mirea/practice/s23k0623/task4/Main.java b/students/23K0623/23K0623-p025/src/main/java/ru/mirea/practice/s23k0623/task4/Main.java new file mode 100644 index 000000000..63d032c82 --- /dev/null +++ b/students/23K0623/23K0623-p025/src/main/java/ru/mirea/practice/s23k0623/task4/Main.java @@ -0,0 +1,17 @@ +package ru.mirea.practice.s23k0623.task4; + +import java.util.Scanner; +import java.util.regex.Pattern; + +public abstract class Main { + public static void main(String[] args) { + Pattern pattern = Pattern.compile("([a-zA-Z.\\d])+@(([a-z]+\\.[a-z]+)|[a-z]+)"); + String input; + try (Scanner scanner = new Scanner(System.in)) { + input = scanner.nextLine(); + } + if (pattern.matcher(input).matches()) { + System.out.println("Input string is a valid email address"); + } + } +} diff --git a/students/23K0623/23K0623-p025/src/main/java/ru/mirea/practice/s23k0623/task5/Main.java b/students/23K0623/23K0623-p025/src/main/java/ru/mirea/practice/s23k0623/task5/Main.java new file mode 100644 index 000000000..d6ff29159 --- /dev/null +++ b/students/23K0623/23K0623-p025/src/main/java/ru/mirea/practice/s23k0623/task5/Main.java @@ -0,0 +1,17 @@ +package ru.mirea.practice.s23k0623.task5; + +import java.util.regex.Matcher; +import java.util.regex.Pattern; + +public abstract class Main { + public static void main(String[] args) { + String text = "Цены: 25.98 USD, 44 ERR, 0.004 EU, 10.00 RUB, 99.95 EUR"; + Pattern pattern = Pattern.compile("\\b\\d{1,3}(\\.\\d{1,2})? (USD|RUB|EUR)\\b"); + Matcher matcher = pattern.matcher(text); + + System.out.println("Цены в USD, RUB, EUR:"); + while (matcher.find()) { + System.out.println(matcher.group()); + } + } +} diff --git a/students/23K0623/23K0623-p026/pom.xml b/students/23K0623/23K0623-p026/pom.xml new file mode 100644 index 000000000..22c39e3cc --- /dev/null +++ b/students/23K0623/23K0623-p026/pom.xml @@ -0,0 +1,13 @@ + + + 4.0.0 + + 23K0623 + ru.mirea.practice + 2024.1 + ../pom.xml + + 23K0623-p026 + Массивы + diff --git a/students/23K0623/23K0623-p026/src/main/java/ru/mirea/practice/s23k0623/Main.java b/students/23K0623/23K0623-p026/src/main/java/ru/mirea/practice/s23k0623/Main.java new file mode 100644 index 000000000..941b40f62 --- /dev/null +++ b/students/23K0623/23K0623-p026/src/main/java/ru/mirea/practice/s23k0623/Main.java @@ -0,0 +1,12 @@ +package ru.mirea.practice.s23k0623; + +public final class Main { + + private Main() { + + } + + public static void main(String[] args) { + System.out.println("Двадцать шестая практическая работа!"); + } +} diff --git a/students/23K0623/23K0623-p026/src/main/java/ru/mirea/practice/s23k0623/task1/Main.java b/students/23K0623/23K0623-p026/src/main/java/ru/mirea/practice/s23k0623/task1/Main.java new file mode 100644 index 000000000..cb720c22a --- /dev/null +++ b/students/23K0623/23K0623-p026/src/main/java/ru/mirea/practice/s23k0623/task1/Main.java @@ -0,0 +1,27 @@ +package ru.mirea.practice.s23k0623.task1; + +import java.util.ArrayList; +import java.util.List; +import java.util.Stack; + +public abstract class Main { + public static List reverse(List list) { + Stack stack = new Stack<>(); + int i = 0; + while (i < list.size() / 2) { + stack.push(list.get(i)); + stack.push(list.get(list.size() - i - 1)); + list.set(i, stack.pop()); + list.set(list.size() - i - 1, stack.pop()); + i++; + } + return list; + } + + public static void main(String[] args) { + ArrayList integers = new ArrayList<>(List.of(new Integer[]{1, 2, 3, 4, 5, 6})); + System.out.println(integers); + reverse(integers); + System.out.println(integers); + } +} diff --git a/students/23K0623/23K0623-p026/src/main/java/ru/mirea/practice/s23k0623/task2/CustomIterator.java b/students/23K0623/23K0623-p026/src/main/java/ru/mirea/practice/s23k0623/task2/CustomIterator.java new file mode 100644 index 000000000..1422635e9 --- /dev/null +++ b/students/23K0623/23K0623-p026/src/main/java/ru/mirea/practice/s23k0623/task2/CustomIterator.java @@ -0,0 +1,20 @@ +package ru.mirea.practice.s23k0623.task2; + +import java.util.Iterator; + +public class CustomIterator implements Iterator { + Node cursor; + + CustomIterator(CustomList list) { + cursor = list.getFirst(); + } + + public boolean hasNext() { + return cursor.getNext() != null; + } + + public T next() { + cursor = cursor.getNext(); + return cursor.getData(); + } +} diff --git a/students/23K0623/23K0623-p026/src/main/java/ru/mirea/practice/s23k0623/task2/CustomList.java b/students/23K0623/23K0623-p026/src/main/java/ru/mirea/practice/s23k0623/task2/CustomList.java new file mode 100644 index 000000000..f05c4f41a --- /dev/null +++ b/students/23K0623/23K0623-p026/src/main/java/ru/mirea/practice/s23k0623/task2/CustomList.java @@ -0,0 +1,39 @@ +package ru.mirea.practice.s23k0623.task2; + +import java.util.Iterator; + +public class CustomList implements Iterable { + private Node first; + private final int size; + + public CustomList() { + first = null; + size = 0; + } + + public int getSize() { + return size; + } + + public Node getFirst() { + return first; + } + + public void add(T elem) { + Node node = new Node<>(elem); + if (first == null) { + first = node; + } else { + Node curr = first; + while (curr.getNext() != null) { + curr = curr.getNext(); + } + curr.setNext(node); + } + } + + @Override + public Iterator iterator() { + return new CustomIterator<>(this); + } +} diff --git a/students/23K0623/23K0623-p026/src/main/java/ru/mirea/practice/s23k0623/task2/Node.java b/students/23K0623/23K0623-p026/src/main/java/ru/mirea/practice/s23k0623/task2/Node.java new file mode 100644 index 000000000..e944ba433 --- /dev/null +++ b/students/23K0623/23K0623-p026/src/main/java/ru/mirea/practice/s23k0623/task2/Node.java @@ -0,0 +1,32 @@ +package ru.mirea.practice.s23k0623.task2; + +public class Node { + private T data; + private Node next; + + public Node(T data) { + this.data = data; + next = null; + } + + public T getData() { + return data; + } + + public void setData(T data) { + this.data = data; + } + + public Node getNext() { + return next; + } + + public void setNext(Node next) { + this.next = next; + } + + @Override + public String toString() { + return data.toString(); + } +} diff --git a/students/23K0623/23K0623-p027/pom.xml b/students/23K0623/23K0623-p027/pom.xml new file mode 100644 index 000000000..304282c1b --- /dev/null +++ b/students/23K0623/23K0623-p027/pom.xml @@ -0,0 +1,13 @@ + + + 4.0.0 + + 23K0623 + ru.mirea.practice + 2024.1 + ../pom.xml + + 23K0623-p027 + Массивы + diff --git a/students/23K0623/23K0623-p027/src/main/java/ru/mirea/practice/s23k0623/Main.java b/students/23K0623/23K0623-p027/src/main/java/ru/mirea/practice/s23k0623/Main.java new file mode 100644 index 000000000..ada29ad5c --- /dev/null +++ b/students/23K0623/23K0623-p027/src/main/java/ru/mirea/practice/s23k0623/Main.java @@ -0,0 +1,12 @@ +package ru.mirea.practice.s23k0623; + +public final class Main { + + private Main() { + + } + + public static void main(String[] args) { + System.out.println("Двадцать седьмая практическая работа!"); + } +} diff --git a/students/23K0623/23K0623-p027/src/main/java/ru/mirea/practice/s23k0623/task1/Hashtable.java b/students/23K0623/23K0623-p027/src/main/java/ru/mirea/practice/s23k0623/task1/Hashtable.java new file mode 100644 index 000000000..a920fd8d3 --- /dev/null +++ b/students/23K0623/23K0623-p027/src/main/java/ru/mirea/practice/s23k0623/task1/Hashtable.java @@ -0,0 +1,70 @@ +package ru.mirea.practice.s23k0623.task1; + +import java.util.LinkedList; + +class Hashtable { + private static class KeyValue { + String key; + String value; + + KeyValue(String key, String value) { + this.key = key; + this.value = value; + } + } + + private LinkedList[] table; + private int size; + + @SuppressWarnings("unchecked") + public Hashtable(int size) { + this.size = size; + table = new LinkedList[size]; + for (int i = 0; i < size; i++) { + table[i] = new LinkedList<>(); + } + } + + private int hash(String key) { + return Math.abs(key.hashCode() % size); + } + + public void add(String key, String value) { + int index = hash(key); + for (KeyValue kv : table[index]) { + if (kv.key.equals(key)) { + kv.value = value; + return; + } + } + table[index].add(new KeyValue(key, value)); + } + + public String lookup(String key) { + int index = hash(key); + for (KeyValue kv : table[index]) { + if (kv.key.equals(key)) { + return kv.value; + } + } + return null; + } + + public void delete(String key) { + int index = hash(key); + table[index].removeIf(kv -> kv.key.equals(key)); + } + + public void printTable() { + for (int i = 0; i < size; i++) { + if (!table[i].isEmpty()) { + System.out.print("Bucket " + i + ": "); + for (KeyValue kv : table[i]) { + System.out.print("[" + kv.key + ": " + kv.value + "] "); + } + System.out.println(); + } + } + } +} + diff --git a/students/23K0623/23K0623-p027/src/main/java/ru/mirea/practice/s23k0623/task1/Test.java b/students/23K0623/23K0623-p027/src/main/java/ru/mirea/practice/s23k0623/task1/Test.java new file mode 100644 index 000000000..857aec0d3 --- /dev/null +++ b/students/23K0623/23K0623-p027/src/main/java/ru/mirea/practice/s23k0623/task1/Test.java @@ -0,0 +1,31 @@ +package ru.mirea.practice.s23k0623.task1; + +public abstract class Test { + public static void main(String[] args) { + Hashtable hashTable = new Hashtable(10); + + hashTable.add("key1", "value1"); + hashTable.add("key2", "value2"); + hashTable.add("key3", "value3"); + hashTable.add("key4", "value4"); + hashTable.add("key5", "value5"); + hashTable.add("key6", "value6"); + hashTable.add("key7", "value7"); + hashTable.add("key8", "value8"); + hashTable.add("key9", "value9"); + hashTable.add("key10", "value10"); + + System.out.println("Содержимое хеш-таблицы:"); + hashTable.printTable(); + + String value = hashTable.lookup("key5"); + System.out.println("Поиск key5: " + (value != null ? value : "not found")); + + hashTable.delete("key5"); + System.out.println("После удаления key5:"); + hashTable.printTable(); + + value = hashTable.lookup("key5"); + System.out.println("Поиск key5 после удаления: " + (value != null ? value : "not found")); + } +} diff --git a/students/23K0623/23K0623-p028/pom.xml b/students/23K0623/23K0623-p028/pom.xml new file mode 100644 index 000000000..637aa2feb --- /dev/null +++ b/students/23K0623/23K0623-p028/pom.xml @@ -0,0 +1,13 @@ + + + 4.0.0 + + 23K0623 + ru.mirea.practice + 2024.1 + ../pom.xml + + 23K0623-p028 + Массивы + diff --git a/students/23K0623/23K0623-p028/src/main/java/ru/mirea/practice/s23k0623/Main.java b/students/23K0623/23K0623-p028/src/main/java/ru/mirea/practice/s23k0623/Main.java new file mode 100644 index 000000000..ada29ad5c --- /dev/null +++ b/students/23K0623/23K0623-p028/src/main/java/ru/mirea/practice/s23k0623/Main.java @@ -0,0 +1,12 @@ +package ru.mirea.practice.s23k0623; + +public final class Main { + + private Main() { + + } + + public static void main(String[] args) { + System.out.println("Двадцать седьмая практическая работа!"); + } +} diff --git a/students/23K0623/23K0623-p028/src/main/java/ru/mirea/practice/s23k0623/task1/Main.java b/students/23K0623/23K0623-p028/src/main/java/ru/mirea/practice/s23k0623/task1/Main.java new file mode 100644 index 000000000..3a187d80e --- /dev/null +++ b/students/23K0623/23K0623-p028/src/main/java/ru/mirea/practice/s23k0623/task1/Main.java @@ -0,0 +1,18 @@ +package ru.mirea.practice.s23k0623.task1; + +import java.util.HashMap; +import java.util.Map; +import java.util.TreeMap; + +public abstract class Main { + public static void main(String[] args) { + Map hashmap = new HashMap<>(); + hashmap.put(1, 2005); + hashmap.put(2, 2012); + hashmap.put(3, 2023); + hashmap.put(4, 2027); + Map treemap = new TreeMap<>(hashmap); + System.out.println(hashmap); + System.out.println(treemap); + } +} diff --git a/students/23K0623/23K0623-p028/src/main/java/ru/mirea/practice/s23k0623/task2/Main.java b/students/23K0623/23K0623-p028/src/main/java/ru/mirea/practice/s23k0623/task2/Main.java new file mode 100644 index 000000000..0ff66527a --- /dev/null +++ b/students/23K0623/23K0623-p028/src/main/java/ru/mirea/practice/s23k0623/task2/Main.java @@ -0,0 +1,57 @@ +package ru.mirea.practice.s23k0623.task2; + + +import java.util.HashMap; +import java.util.Map; + +public abstract class Main { + + public static Map createMap() { + Map map = new HashMap<>(); + map.put("Кузнецов", "Алексей"); + map.put("Сидорова", "Мария"); + map.put("Петров", "Иван"); + map.put("Кузнецова", "Анна"); + map.put("Иванов", "Дмитрий"); + map.put("Петрова", "Мария"); + map.put("Смирнов", "Алексей"); + map.put("Иванова", "Елена"); + map.put("Смирнов", "Иван"); + map.put("Иванова", "Мария"); + return map; + } + + public static int getSameFirstNameCount(Map map) { + Map nameMap = new HashMap<>(); + for (String value : map.values()) { + if (nameMap.containsKey(value)) { + nameMap.put(value, nameMap.get(value) + 1); + } else { + nameMap.put(value, 1); + } + } + + int count = 0; + int nameCount; + for (String name : nameMap.keySet()) { + nameCount = nameMap.get(name); + if (nameCount > 1) { + count += nameCount; + } + } + + return count; + } + + public static int getSameLastNameCount(Map map) { + return 0; + // Данный по условию тип данных Map не позволяет + // содержать ключи с одинаковыми значениями + } + + public static void main(String[] args) { + Map map = createMap(); + System.out.println(getSameFirstNameCount(map)); + System.out.println(getSameLastNameCount(map)); + } +} diff --git a/students/23K0623/23K0623-p029/pom.xml b/students/23K0623/23K0623-p029/pom.xml new file mode 100644 index 000000000..1c1ab3aea --- /dev/null +++ b/students/23K0623/23K0623-p029/pom.xml @@ -0,0 +1,13 @@ + + + 4.0.0 + + 23K0623 + ru.mirea.practice + 2024.1 + ../pom.xml + + 23K0623-p029 + Массивы + diff --git a/students/23K0623/23K0623-p029/src/main/java/ru/mirea/practice/s23k0623/Main.java b/students/23K0623/23K0623-p029/src/main/java/ru/mirea/practice/s23k0623/Main.java new file mode 100644 index 000000000..0cd52d51d --- /dev/null +++ b/students/23K0623/23K0623-p029/src/main/java/ru/mirea/practice/s23k0623/Main.java @@ -0,0 +1,12 @@ +package ru.mirea.practice.s23k0623; + +public final class Main { + + private Main() { + + } + + public static void main(String[] args) { + System.out.println("Двадцать девятая практическая работа!"); + } +} diff --git a/students/23K0623/23K0623-p029/src/main/java/ru/mirea/practice/s23k0623/task1/Main.java b/students/23K0623/23K0623-p029/src/main/java/ru/mirea/practice/s23k0623/task1/Main.java new file mode 100644 index 000000000..ccded7c3f --- /dev/null +++ b/students/23K0623/23K0623-p029/src/main/java/ru/mirea/practice/s23k0623/task1/Main.java @@ -0,0 +1,35 @@ +package ru.mirea.practice.s23k0623.task1; + + +import java.util.Scanner; + +public abstract class Main { + public static void main(String[] args) { + try (Scanner scanner = new Scanner(System.in)) { + int n = scanner.nextInt(); + if (n == 0) { + System.out.println(0); + return; + } + + int[][] adjacencyMatrix = new int[n][n]; + for (int i = 0; i < n; i++) { + for (int j = 0; j < n; j++) { + adjacencyMatrix[i][j] = scanner.nextInt(); + } + } + + int roadCount = 0; + for (int i = 0; i < n; i++) { + for (int j = i + 1; j < n; j++) { + roadCount += adjacencyMatrix[i][j]; + } + } + + System.out.println(roadCount); + + } catch (RuntimeException e) { + throw new RuntimeException(e); + } + } +} diff --git a/students/23K0623/23K0623-p029/src/main/java/ru/mirea/practice/s23k0623/task2/Main.java b/students/23K0623/23K0623-p029/src/main/java/ru/mirea/practice/s23k0623/task2/Main.java new file mode 100644 index 000000000..3a99ed26d --- /dev/null +++ b/students/23K0623/23K0623-p029/src/main/java/ru/mirea/practice/s23k0623/task2/Main.java @@ -0,0 +1,48 @@ +package ru.mirea.practice.s23k0623.task2; + + +import java.io.File; +import java.io.FileNotFoundException; +import java.io.PrintWriter; +import java.util.Scanner; + +public abstract class Main { + public static void main(String[] args) throws FileNotFoundException { + int[][] graph; + int n; + try (Scanner scanner = new Scanner(new File("students/23K0120/23K0120-p29/src/main/java/ru/mirea/practice/s23k0120/task2/graph.txt"))) { + n = scanner.nextInt(); + graph = new int[n][n]; + for (int i = 0; i < n; i++) { + for (int j = 0; j < n; j++) { + graph[i][j] = scanner.nextInt(); + if (graph[i][j] == 0 && i != j) { + graph[i][j] = Integer.MAX_VALUE / 2; + } + } + } + } + + for (int k = 0; k < n; k++) { + for (int i = 0; i < n; i++) { + for (int j = 0; j < n; j++) { + graph[i][j] = Math.min(graph[i][j], graph[i][k] + graph[k][j]); + } + } + } + + try (PrintWriter writer = new PrintWriter(new File("students/23K0120/23K0120-p29/src/" + + "main/java/ru/mirea/practice/s23k0120/task2/graphShortest.txt"))) { + for (int i = 0; i < n; i++) { + for (int j = 0; j < n; j++) { + if (graph[i][j] == Integer.MAX_VALUE / 2) { + writer.print(0 + " "); + } else { + writer.print(graph[i][j] + " "); + } + } + writer.println(); + } + } + } +} diff --git a/students/23K0623/23K0623-p029/src/main/java/ru/mirea/practice/s23k0623/task2/graph.txt b/students/23K0623/23K0623-p029/src/main/java/ru/mirea/practice/s23k0623/task2/graph.txt new file mode 100644 index 000000000..1795f843e --- /dev/null +++ b/students/23K0623/23K0623-p029/src/main/java/ru/mirea/practice/s23k0623/task2/graph.txt @@ -0,0 +1,7 @@ +6 +0 7 9 0 0 14 +7 0 10 15 0 0 +9 10 0 11 0 2 +0 15 11 0 6 0 +0 0 0 6 0 9 +14 0 2 0 9 0 diff --git a/students/23K0623/23K0623-p029/src/main/java/ru/mirea/practice/s23k0623/task2/graphShortest.txt b/students/23K0623/23K0623-p029/src/main/java/ru/mirea/practice/s23k0623/task2/graphShortest.txt new file mode 100644 index 000000000..59372392a --- /dev/null +++ b/students/23K0623/23K0623-p029/src/main/java/ru/mirea/practice/s23k0623/task2/graphShortest.txt @@ -0,0 +1,6 @@ +0 7 9 20 20 11 +7 0 10 15 21 12 +9 10 0 11 11 2 +20 15 11 0 6 13 +20 21 11 6 0 9 +11 12 2 13 9 0 diff --git a/students/23K0623/23K0623-p030/pom.xml b/students/23K0623/23K0623-p030/pom.xml new file mode 100644 index 000000000..0197600e3 --- /dev/null +++ b/students/23K0623/23K0623-p030/pom.xml @@ -0,0 +1,13 @@ + + + 4.0.0 + + 23K0623 + ru.mirea.practice + 2024.1 + ../pom.xml + + 23K0623-p030 + Массивы + diff --git a/students/23K0623/23K0623-p030/src/main/java/ru/mirea/practice/s23k0623/task1/Test.java b/students/23K0623/23K0623-p030/src/main/java/ru/mirea/practice/s23k0623/task1/Test.java new file mode 100644 index 000000000..912f670cb --- /dev/null +++ b/students/23K0623/23K0623-p030/src/main/java/ru/mirea/practice/s23k0623/task1/Test.java @@ -0,0 +1,16 @@ +package ru.mirea.practice.s23k0623.task1; + +public abstract class Test { + public static void main(String[] args) { + Tree tree = new Tree(); + tree.add(6); + tree.add(5); + tree.add(3); + tree.add(4); + tree.add(2); + tree.add(1); + System.out.println("4:" + tree.isVal(4)); + System.out.println("40:" + tree.isVal(10)); + tree.sort(); + } +} diff --git a/students/23K0623/23K0623-p030/src/main/java/ru/mirea/practice/s23k0623/task1/Tree.java b/students/23K0623/23K0623-p030/src/main/java/ru/mirea/practice/s23k0623/task1/Tree.java new file mode 100644 index 000000000..e93bc205e --- /dev/null +++ b/students/23K0623/23K0623-p030/src/main/java/ru/mirea/practice/s23k0623/task1/Tree.java @@ -0,0 +1,64 @@ +package ru.mirea.practice.s23k0623.task1; + +public class Tree { + static class Node { + private int val; + private Node left; + private Node right; + + Node(int val) { + this.val = val; + left = right = null; + } + } + + private Node root; + + void add(int val) { + root = addseeker(root, val); + } + + private Node addseeker(Node current, int value) { + if (current == null) { + return new Node(value); + } + if (value < current.val) { + current.left = addseeker(current.left, value); + } else if (value > current.val) { + current.right = addseeker(current.right, value); + } + + return current; + } + + boolean isVal(int value) { + return valseeker(root, value); + } + + private boolean valseeker(Node current, int val) { + if (current == null) { + return false; + } + if (val == current.val) { + return true; + } + if (val < current.val) { + return valseeker(current.left, val); + } else { + return valseeker(current.right, val); + } + } + + void sort() { + sorter(root); + } + + private void sorter(Node node) { + if (node != null) { + sorter(node.left); + System.out.print(" " + node.val); + sorter(node.right); + } + } + +} diff --git a/students/23K0623/23K0623-p030/src/main/java/ru/mirea/practice/s23k0623/task2/Algae.java b/students/23K0623/23K0623-p030/src/main/java/ru/mirea/practice/s23k0623/task2/Algae.java new file mode 100644 index 000000000..3f8714057 --- /dev/null +++ b/students/23K0623/23K0623-p030/src/main/java/ru/mirea/practice/s23k0623/task2/Algae.java @@ -0,0 +1,67 @@ +package ru.mirea.practice.s23k0623.task2; + +import java.util.PriorityQueue; + +public class Algae { + private String[] codes; // Array to store codes for characters + + public Algae() { + // Initialize the codes array for ASCII characters (256 characters) + codes = new String[256]; + } + + public void hasher(Node root, String code) { + if (root == null) { + return; + } + if (root.left == null && root.right == null) { + codes[root.chara] = code; // Store the code in the array + } + hasher(root.left, code + "0"); + hasher(root.right, code + "1"); + } + + public static Node tree(char[] chars, int[] freqs) { + PriorityQueue priorityQueue = new PriorityQueue<>(); + for (int i = 0; i < chars.length; i++) { + priorityQueue.add(new Node(chars[i], freqs[i])); + } + while (priorityQueue.size() > 1) { + Node left = priorityQueue.poll(); + Node right = priorityQueue.poll(); + Node newNode = new Node('\0', left.freq + right.freq); + newNode.left = left; + newNode.right = right; + priorityQueue.add(newNode); + } + return priorityQueue.poll(); + } + + public String hash(String text) { + StringBuilder encodedString = new StringBuilder(); + for (char character : text.toCharArray()) { + String code = codes[character]; // Retrieve the code from the array + if (code != null) { + encodedString.append(code); + } + } + return encodedString.toString(); + } + + public static class Node implements Comparable { + char chara; + int freq; + Node left; + Node right; + + public Node(char chara, int freq) { + this.chara = chara; + this.freq = freq; + } + + @Override + public int compareTo(Node other) { + return Integer.compare(this.freq, other.freq); + } + } +} diff --git a/students/23K0623/23K0623-p030/src/main/java/ru/mirea/practice/s23k0623/task2/Node.java b/students/23K0623/23K0623-p030/src/main/java/ru/mirea/practice/s23k0623/task2/Node.java new file mode 100644 index 000000000..b6c2c1910 --- /dev/null +++ b/students/23K0623/23K0623-p030/src/main/java/ru/mirea/practice/s23k0623/task2/Node.java @@ -0,0 +1,20 @@ +package ru.mirea.practice.s23k0623.task2; + +public class Node implements Comparable { + int freq; + char chara; + Node left; + Node right; + + public Node(char chara, int freq) { + this.chara = chara; + this.freq = freq; + this.left = null; + this.right = null; + } + + @Override + public int compareTo(Node node) { + return Integer.compare(this.freq, node.freq); + } +} diff --git a/students/23K0623/23K0623-p030/src/main/java/ru/mirea/practice/s23k0623/task2/Test.java b/students/23K0623/23K0623-p030/src/main/java/ru/mirea/practice/s23k0623/task2/Test.java new file mode 100644 index 000000000..1291b3708 --- /dev/null +++ b/students/23K0623/23K0623-p030/src/main/java/ru/mirea/practice/s23k0623/task2/Test.java @@ -0,0 +1,15 @@ +package ru.mirea.practice.s23k0623.task2; + +public abstract class Test { + public static void main(String[] args) { + String str = "sand"; + char[] chars = {'s', 'a', 'n', 'd'}; + int[] freqs = {1, 1, 1, 1}; + Algae alg = new Algae(); + Algae.Node root = Algae.tree(chars, freqs); + alg.hasher(root, ""); + String str1 = alg.hash(str); + System.out.println("start: " + str); + System.out.println("encoded: " + str1); + } +} diff --git a/students/23K0623/23K0623-p031/pom.xml b/students/23K0623/23K0623-p031/pom.xml new file mode 100644 index 000000000..3736256aa --- /dev/null +++ b/students/23K0623/23K0623-p031/pom.xml @@ -0,0 +1,13 @@ + + + 4.0.0 + + 23K0623 + ru.mirea.practice + 2024.1 + ../pom.xml + + 23K0623-p031 + Массивы + diff --git a/students/23K0623/23K0623-p031/src/main/java/ru/mirea/practice/s23k0623/Node.java b/students/23K0623/23K0623-p031/src/main/java/ru/mirea/practice/s23k0623/Node.java new file mode 100644 index 000000000..aca1e0a92 --- /dev/null +++ b/students/23K0623/23K0623-p031/src/main/java/ru/mirea/practice/s23k0623/Node.java @@ -0,0 +1,13 @@ +package ru.mirea.practice.s23k0623; + +public class Node { + Processor[] procs; + Node[] nodes; + int cnt; + + public Node() { + procs = new Processor[10]; + nodes = new Node[10]; + cnt = 0; + } +} diff --git a/students/23K0623/23K0623-p031/src/main/java/ru/mirea/practice/s23k0623/Processor.java b/students/23K0623/23K0623-p031/src/main/java/ru/mirea/practice/s23k0623/Processor.java new file mode 100644 index 000000000..109364bca --- /dev/null +++ b/students/23K0623/23K0623-p031/src/main/java/ru/mirea/practice/s23k0623/Processor.java @@ -0,0 +1,21 @@ +package ru.mirea.practice.s23k0623; + +public class Processor { + int key; + String name; + double clockFrequency; + int cacheSize; + double busFrequency; + int specInt; + int specFp; + + public Processor(int key, String name, double clockFrequency, int cacheSize, double busFrequency, int specInt, int specFp) { + this.key = key; + this.name = name; + this.clockFrequency = clockFrequency; + this.cacheSize = cacheSize; + this.busFrequency = busFrequency; + this.specInt = specInt; + this.specFp = specFp; + } +} diff --git a/students/23K0623/23K0623-p031/src/main/java/ru/mirea/practice/s23k0623/Test.java b/students/23K0623/23K0623-p031/src/main/java/ru/mirea/practice/s23k0623/Test.java new file mode 100644 index 000000000..5b0b13c3d --- /dev/null +++ b/students/23K0623/23K0623-p031/src/main/java/ru/mirea/practice/s23k0623/Test.java @@ -0,0 +1,48 @@ +package ru.mirea.practice.s23k0623; + +import java.util.Scanner; + +public abstract class Test { + public static void main(String[] args) { + final Tree tree = new Tree(); + Processor[] procs = new Processor[3]; + procs[0] = new Processor(1,"a",1.0,1,1.0,1,1); + procs[1] = new Processor(2,"b",2.0,2,2.0,2,2); + procs[2] = new Processor(3,"c",3.0,3,3.0,3,3); + tree.add(procs[0]); + tree.add(procs[1]); + tree.add(procs[2]); + + try (Scanner scanner = new Scanner(System.in)) { + String command; + while (true) { + System.out.print("input: "); + command = scanner.nextLine(); + if ("E".equalsIgnoreCase(command)) { + break; + } + executeCommand(tree, command); + } + } + } + + private static void executeCommand(Tree tree, String command) { + switch (command.charAt(0)) { + case 'L': + tree.print(); + break; + case 'D': + tree.delete(10); + break; + case 'A': + tree.add(new Processor(10,"e",10.0,10,10.0,10,10)); + break; + case 'S': + tree.saveToFile("aga"); + break; + default: + System.out.println("wrong input."); + break; + } + } +} diff --git a/students/23K0623/23K0623-p031/src/main/java/ru/mirea/practice/s23k0623/Tree.java b/students/23K0623/23K0623-p031/src/main/java/ru/mirea/practice/s23k0623/Tree.java new file mode 100644 index 000000000..136c446ab --- /dev/null +++ b/students/23K0623/23K0623-p031/src/main/java/ru/mirea/practice/s23k0623/Tree.java @@ -0,0 +1,148 @@ +package ru.mirea.practice.s23k0623; + +import java.io.BufferedWriter; +import java.io.FileWriter; +import java.io.IOException; +import java.util.LinkedList; +import java.util.Queue; + +class Tree { + private Node root; + + public Tree() { + root = null; + } + + public void add(Processor processor) { + root = insert(root, processor); + } + + private Node insert(Node node, Processor processor) { + if (node == null) { + Node newNode = new Node(); + newNode.procs[0] = processor; + newNode.cnt = 1; + return newNode; + } + if (node.cnt < 3) { + insertInNode(node, processor); + return node; + } + return splitter(node, processor); + } + + private void insertInNode(Node node, Processor processor) { + int i = node.cnt - 1; + while (i >= 0 && processor.key < node.procs[i].key) { + node.procs[i + 1] = node.procs[i]; + i--; + } + node.procs[i + 1] = processor; + node.cnt++; + } + + private Node splitter(Node node, Processor processor) { + Node newNode = new Node(); + final Processor mid = node.procs[1]; + newNode.procs[0] = node.procs[2]; + newNode.cnt = 1; + node.cnt = 1; + node.procs[1] = null; + if (processor.key < mid.key) { + insertInNode(node, processor); + } else { + insertInNode(newNode, processor); + } + Node newRoot = new Node(); + newRoot.procs[0] = mid; + newRoot.nodes[0] = node; + newRoot.nodes[1] = newNode; + newRoot.cnt = 1; + return newRoot; + } + + public Processor search(int key) { + return search(root, key); + } + + private Processor search(Node node, int key) { + if (node == null) { + return null; + } + for (int i = 0; i < node.cnt; i++) { + if (key == node.procs[i].key) { + return node.procs[i]; + } + if (key < node.procs[i].key) { + return search(node.nodes[i], key); + } + } + return search(node.nodes[node.cnt], key); + } + + public void delete(int key) { + if (search(key) == null) { + System.out.println("key not found."); + return; + } + root = delete(root); + } + + private Node delete(Node node) { + return node; + } + + public void saveToFile(String filename) { + try (BufferedWriter bw = new BufferedWriter(new FileWriter(filename))) { + saveToFile(root, bw); + } catch (IOException e) { + System.out.println("error: " + e.getMessage()); + } + } + + private void saveToFile(Node node, BufferedWriter bw) throws IOException { + if (node != null) { + for (int i = 0; i < node.cnt; i++) { + String str1 = node.procs[i].key + "," + node.procs[i].name + "," + node.procs[i].clockFrequency; + String str2 = "," + node.procs[i].cacheSize + "," + node.procs[i].busFrequency + ","; + String str3 = node.procs[i].specInt + "," + node.procs[i].specFp; + bw.write(str1 + str2 + str3); + bw.newLine(); + } + for (int i = 0; i <= node.cnt; i++) { + saveToFile(node.nodes[i], bw); + } + } + } + + public void print() { + printLevelOrder(root); + } + + private void printLevelOrder(Node node) { + if (node == null) { + return; + } + Queue queue = new LinkedList<>(); + queue.add(node); + while (!queue.isEmpty()) { + Node current = queue.poll(); + for (int i = 0; i < current.cnt; i++) { + if (current.nodes[i] != null) { + System.out.print(current.procs[i].key + " "); + } + if (current.cnt == 3) { + System.out.print(current.procs[i].key + " "); + } else if (current.cnt == 2) { + System.out.print(current.procs[i].key + " - "); + } + } + System.out.println(); + for (int i = 0; i <= current.cnt; i++) { + if (current.nodes[i] != null) { + queue.add(current.nodes[i]); + } + } + } + } +} diff --git a/students/23K0623/23K0623-p032/pom.xml b/students/23K0623/23K0623-p032/pom.xml new file mode 100644 index 000000000..79d8762c0 --- /dev/null +++ b/students/23K0623/23K0623-p032/pom.xml @@ -0,0 +1,13 @@ + + + 4.0.0 + + 23K0623 + ru.mirea.practice + 2024.1 + ../pom.xml + + 23K0623-p032 + Массивы + diff --git a/students/23K0623/23K0623-p032/src/main/java/ru/mirea/practice/s23k0623/Jo.java b/students/23K0623/23K0623-p032/src/main/java/ru/mirea/practice/s23k0623/Jo.java new file mode 100644 index 000000000..fa24b5f10 --- /dev/null +++ b/students/23K0623/23K0623-p032/src/main/java/ru/mirea/practice/s23k0623/Jo.java @@ -0,0 +1,87 @@ +package ru.mirea.practice.s23k0623; + +public abstract class Jo { + private static boolean ltr = true; + private static boolean rtl = false; + + public static int searcher(int[] a, int n, int dir) { + for (int i = 0; i < n; i++) { + if (a[i] == dir) { + return i + 1; + } + } + return 0; + } + + public static int getDir(int[] a, boolean[] dir, int n) { + int mobileprev = 0; + int mobile = 0; + for (int i = 0; i < n; i++) { + if (dir[a[i] - 1] == rtl && i != 0) { + if (a[i] > a[i - 1] && a[i] > mobileprev) { + mobile = a[i]; + mobileprev = mobile; + } + } + if (dir[a[i] - 1] == ltr && i != n - 1) { + if (a[i] > a[i + 1] && a[i] > mobileprev) { + mobile = a[i]; + mobileprev = mobile; + } + } + } + if (mobile == 0) { + return 0; + } else { + return mobile; + } + } + + public static int printone(int[] a, boolean[] dir, int n) { + int mobile = getDir(a, dir, n); + int pos = searcher(a, n, mobile); + if (dir[a[pos - 1] - 1] == rtl) { + int temp = a[pos - 1]; + a[pos - 1] = a[pos - 2]; + a[pos - 2] = temp; + } else if (dir[a[pos - 1] - 1] == ltr) { + int temp = a[pos]; + a[pos] = a[pos - 1]; + a[pos - 1] = temp; + } + for (int i = 0; i < n; i++) { + if (a[i] > mobile) { + dir[a[i] - 1] = !dir[a[i] - 1]; + } + } + for (int value : a) { + System.out.println(value); + } + System.out.println(" "); + return 0; + } + + public static int factor(int n) { + int res = 1; + for (int i = 1; i <= n; i++) { + res *= i; + } + return res; + } + + public static void printer(int n) { + int[] a = new int[n]; + boolean[] dir = new boolean[n]; + for (int i = 0; i < n; i++) { + a[i] = i + 1; + System.out.println(a[i]); + } + System.out.println(" "); + for (int i = 0; i < n; i++) { + dir[i] = rtl; + } + for (int i = 1; i < factor(n); i++) { + printone(a, dir, n); + } + } +} diff --git a/students/23K0623/23K0623-p032/src/main/java/ru/mirea/practice/s23k0623/Test.java b/students/23K0623/23K0623-p032/src/main/java/ru/mirea/practice/s23k0623/Test.java new file mode 100644 index 000000000..4ec120f31 --- /dev/null +++ b/students/23K0623/23K0623-p032/src/main/java/ru/mirea/practice/s23k0623/Test.java @@ -0,0 +1,10 @@ +package ru.mirea.practice.s23k0623; + +import static ru.mirea.practice.s23k0623.Jo.printer; + +public abstract class Test { + public static void main(String[] args) { + int n = 4; + printer(n); + } +} diff --git a/students/23K0623/pom.xml b/students/23K0623/pom.xml index 860caa72c..2bad0f5a0 100644 --- a/students/23K0623/pom.xml +++ b/students/23K0623/pom.xml @@ -24,6 +24,27 @@ 23K0623-p08 23K0623-p09 23K0623-p010 - + 23K0623-p011 + 23K0623-p012 + 23K0623-p013 + 23K0623-p014 + 23K0623-p015 + 23K0623-p016 + 23K0623-p017 + 23K0623-p018 + 23K0623-p019 + 23K0623-p020 + 23K0623-p021 + 23K0623-p022 + 23K0623-p023 + 23K0623-p024 + 23K0623-p025 + 23K0623-p026 + 23K0623-p027 + 23K0623-p028 + 23K0623-p029 + 23K0623-p030 + 23K0623-p031 + 23K0623-p032