From 5b67440ffb91701b495361626c4db08f00bcddf0 Mon Sep 17 00:00:00 2001 From: KhromovAM Date: Fri, 4 Oct 2024 14:32:33 +0300 Subject: [PATCH 1/5] =?UTF-8?q?10=20=D0=BF=D1=80=D0=B0=D0=BA=D1=82=D0=B8?= =?UTF-8?q?=D0=BA?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- students/23K0623/23K0623-p010/pom.xml | 13 +++ .../java/ru/mirea/practice/s23k0623/Main.java | 12 +++ .../s23k0623/SortingStudentsByGpa.java | 69 ++++++++++++ .../ru/mirea/practice/s23k0623/Student.java | 84 +++++++++++++++ .../mirea/practice/s23k0623/Test1Student.java | 13 +++ .../mirea/practice/s23k0623/Test2Student.java | 30 ++++++ students/23K0623/23K0623-p02/pom.xml | 13 +++ .../ru/mirea/practice/s23k0623/Circle.java | 19 ++++ .../ru/mirea/practice/s23k0623/Point.java | 19 ++++ .../ru/mirea/practice/s23k0623/Task1.java | 34 ++++++ .../ru/mirea/practice/s23k0623/Task4.java | 53 ++++++++++ .../ru/mirea/practice/s23k0623/Tester.java | 29 +++++ students/23K0623/23K0623-p03/pom.xml | 13 +++ .../ru/mirea/practice/s23k0623/Task1.java | 25 +++++ .../ru/mirea/practice/s23k0623/Task3.java | 40 +++++++ .../ru/mirea/practice/s23k0623/Task4.java | 47 ++++++++ students/23K0623/23K0623-p04/pom.xml | 13 +++ .../ru/mirea/practice/s23k0623/Task4.java | 97 +++++++++++++++++ students/23K0623/23K0623-p041/pom.xml | 13 +++ .../java/ru/mirea/practice/s23k0623/Main.java | 19 ++++ .../ru/mirea/practice/s23k0623/Matrix.java | 72 +++++++++++++ .../mirea/practice/s23k0623/MatrixTest.java | 34 ++++++ .../ru/mirea/practice/s23k0623/Phone.java | 41 +++++++ .../ru/mirea/practice/s23k0623/Task3.java | 40 +++++++ students/23K0623/23K0623-p05/pom.xml | 13 +++ .../java/ru/mirea/practice/s23k0623/Main.java | 29 +++++ .../ru/mirea/practice/s23k0623/Task1.java | 100 ++++++++++++++++++ students/23K0623/23K0623-p06/pom.xml | 13 +++ .../ru/mirea/practice/s23k0623/Animal.java | 15 +++ .../java/ru/mirea/practice/s23k0623/Man.java | 14 +++ .../ru/mirea/practice/s23k0623/Movable.java | 12 +++ .../mirea/practice/s23k0623/MovablePoint.java | 41 +++++++ .../practice/s23k0623/MovableRectangle.java | 64 +++++++++++ .../ru/mirea/practice/s23k0623/Nameable.java | 5 + .../ru/mirea/practice/s23k0623/Planet.java | 15 +++ .../mirea/practice/s23k0623/TestNameable.java | 15 +++ .../ru/mirea/practice/s23k0623/Tester.java | 13 +++ students/23K0623/23K0623-p07/pom.xml | 13 +++ .../java/ru/mirea/practice/s23k0623/Main.java | 15 +++ .../practice/s23k0623/MathCalculable.java | 10 ++ .../ru/mirea/practice/s23k0623/MathFunc.java | 18 ++++ .../mirea/practice/s23k0623/task2/Book.java | 15 +++ .../practice/s23k0623/task2/Magazine.java | 24 +++++ .../mirea/practice/s23k0623/task2/Main.java | 16 +++ .../practice/s23k0623/task2/Printable.java | 5 + students/23K0623/23K0623-p08/pom.xml | 13 +++ .../ru/mirea/practice/s23k0623/MaxCount.java | 34 ++++++ .../ru/mirea/practice/s23k0623/MaxNumber.java | 30 ++++++ .../practice/s23k0623/NumbersFromOneToN.java | 17 +++ students/23K0623/23K0623-p09/pom.xml | 13 +++ .../practice/s23k0623/InsertionSort.java | 19 ++++ .../java/ru/mirea/practice/s23k0623/Main.java | 4 + .../ru/mirea/practice/s23k0623/Student.java | 31 ++++++ .../mirea/practice/s23k0623/task1/Sorter.java | 36 +++++++ .../practice/s23k0623/task1/Student.java | 35 ++++++ .../s23k0623/task2/CompSciComparator.java | 17 +++ .../s23k0623/task2/MathComparator.java | 17 +++ .../s23k0623/task2/PhylosophyComparator.java | 17 +++ .../s23k0623/task2/PhysComparator.java | 17 +++ .../s23k0623/task2/SortingStudentsBygpa.java | 54 ++++++++++ .../practice/s23k0623/task2/Student.java | 84 +++++++++++++++ students/23K0623/pom.xml | 10 ++ 62 files changed, 1755 insertions(+) create mode 100644 students/23K0623/23K0623-p010/pom.xml create mode 100644 students/23K0623/23K0623-p010/src/main/java/ru/mirea/practice/s23k0623/Main.java create mode 100644 students/23K0623/23K0623-p010/src/main/java/ru/mirea/practice/s23k0623/SortingStudentsByGpa.java create mode 100644 students/23K0623/23K0623-p010/src/main/java/ru/mirea/practice/s23k0623/Student.java create mode 100644 students/23K0623/23K0623-p010/src/main/java/ru/mirea/practice/s23k0623/Test1Student.java create mode 100644 students/23K0623/23K0623-p010/src/main/java/ru/mirea/practice/s23k0623/Test2Student.java create mode 100644 students/23K0623/23K0623-p02/pom.xml create mode 100644 students/23K0623/23K0623-p02/src/main/java/ru/mirea/practice/s23k0623/Circle.java create mode 100644 students/23K0623/23K0623-p02/src/main/java/ru/mirea/practice/s23k0623/Point.java create mode 100644 students/23K0623/23K0623-p02/src/main/java/ru/mirea/practice/s23k0623/Task1.java create mode 100644 students/23K0623/23K0623-p02/src/main/java/ru/mirea/practice/s23k0623/Task4.java create mode 100644 students/23K0623/23K0623-p02/src/main/java/ru/mirea/practice/s23k0623/Tester.java create mode 100644 students/23K0623/23K0623-p03/pom.xml create mode 100644 students/23K0623/23K0623-p03/src/main/java/ru/mirea/practice/s23k0623/Task1.java create mode 100644 students/23K0623/23K0623-p03/src/main/java/ru/mirea/practice/s23k0623/Task3.java create mode 100644 students/23K0623/23K0623-p03/src/main/java/ru/mirea/practice/s23k0623/Task4.java create mode 100644 students/23K0623/23K0623-p04/pom.xml create mode 100644 students/23K0623/23K0623-p04/src/main/java/ru/mirea/practice/s23k0623/Task4.java create mode 100644 students/23K0623/23K0623-p041/pom.xml create mode 100644 students/23K0623/23K0623-p041/src/main/java/ru/mirea/practice/s23k0623/Main.java create mode 100644 students/23K0623/23K0623-p041/src/main/java/ru/mirea/practice/s23k0623/Matrix.java create mode 100644 students/23K0623/23K0623-p041/src/main/java/ru/mirea/practice/s23k0623/MatrixTest.java create mode 100644 students/23K0623/23K0623-p041/src/main/java/ru/mirea/practice/s23k0623/Phone.java create mode 100644 students/23K0623/23K0623-p041/src/main/java/ru/mirea/practice/s23k0623/Task3.java create mode 100644 students/23K0623/23K0623-p05/pom.xml create mode 100644 students/23K0623/23K0623-p05/src/main/java/ru/mirea/practice/s23k0623/Main.java create mode 100644 students/23K0623/23K0623-p05/src/main/java/ru/mirea/practice/s23k0623/Task1.java create mode 100644 students/23K0623/23K0623-p06/pom.xml create mode 100644 students/23K0623/23K0623-p06/src/main/java/ru/mirea/practice/s23k0623/Animal.java create mode 100644 students/23K0623/23K0623-p06/src/main/java/ru/mirea/practice/s23k0623/Man.java create mode 100644 students/23K0623/23K0623-p06/src/main/java/ru/mirea/practice/s23k0623/Movable.java create mode 100644 students/23K0623/23K0623-p06/src/main/java/ru/mirea/practice/s23k0623/MovablePoint.java create mode 100644 students/23K0623/23K0623-p06/src/main/java/ru/mirea/practice/s23k0623/MovableRectangle.java create mode 100644 students/23K0623/23K0623-p06/src/main/java/ru/mirea/practice/s23k0623/Nameable.java create mode 100644 students/23K0623/23K0623-p06/src/main/java/ru/mirea/practice/s23k0623/Planet.java create mode 100644 students/23K0623/23K0623-p06/src/main/java/ru/mirea/practice/s23k0623/TestNameable.java create mode 100644 students/23K0623/23K0623-p06/src/main/java/ru/mirea/practice/s23k0623/Tester.java create mode 100644 students/23K0623/23K0623-p07/pom.xml create mode 100644 students/23K0623/23K0623-p07/src/main/java/ru/mirea/practice/s23k0623/Main.java create mode 100644 students/23K0623/23K0623-p07/src/main/java/ru/mirea/practice/s23k0623/MathCalculable.java create mode 100644 students/23K0623/23K0623-p07/src/main/java/ru/mirea/practice/s23k0623/MathFunc.java create mode 100644 students/23K0623/23K0623-p07/src/main/java/ru/mirea/practice/s23k0623/task2/Book.java create mode 100644 students/23K0623/23K0623-p07/src/main/java/ru/mirea/practice/s23k0623/task2/Magazine.java create mode 100644 students/23K0623/23K0623-p07/src/main/java/ru/mirea/practice/s23k0623/task2/Main.java create mode 100644 students/23K0623/23K0623-p07/src/main/java/ru/mirea/practice/s23k0623/task2/Printable.java create mode 100644 students/23K0623/23K0623-p08/pom.xml create mode 100644 students/23K0623/23K0623-p08/src/main/java/ru/mirea/practice/s23k0623/MaxCount.java create mode 100644 students/23K0623/23K0623-p08/src/main/java/ru/mirea/practice/s23k0623/MaxNumber.java create mode 100644 students/23K0623/23K0623-p08/src/main/java/ru/mirea/practice/s23k0623/NumbersFromOneToN.java create mode 100644 students/23K0623/23K0623-p09/pom.xml create mode 100644 students/23K0623/23K0623-p09/src/main/java/ru/mirea/practice/s23k0623/InsertionSort.java create mode 100644 students/23K0623/23K0623-p09/src/main/java/ru/mirea/practice/s23k0623/Main.java create mode 100644 students/23K0623/23K0623-p09/src/main/java/ru/mirea/practice/s23k0623/Student.java create mode 100644 students/23K0623/23K0623-p09/src/main/java/ru/mirea/practice/s23k0623/task1/Sorter.java create mode 100644 students/23K0623/23K0623-p09/src/main/java/ru/mirea/practice/s23k0623/task1/Student.java create mode 100644 students/23K0623/23K0623-p09/src/main/java/ru/mirea/practice/s23k0623/task2/CompSciComparator.java create mode 100644 students/23K0623/23K0623-p09/src/main/java/ru/mirea/practice/s23k0623/task2/MathComparator.java create mode 100644 students/23K0623/23K0623-p09/src/main/java/ru/mirea/practice/s23k0623/task2/PhylosophyComparator.java create mode 100644 students/23K0623/23K0623-p09/src/main/java/ru/mirea/practice/s23k0623/task2/PhysComparator.java create mode 100644 students/23K0623/23K0623-p09/src/main/java/ru/mirea/practice/s23k0623/task2/SortingStudentsBygpa.java create mode 100644 students/23K0623/23K0623-p09/src/main/java/ru/mirea/practice/s23k0623/task2/Student.java diff --git a/students/23K0623/23K0623-p010/pom.xml b/students/23K0623/23K0623-p010/pom.xml new file mode 100644 index 000000000..05a84ac19 --- /dev/null +++ b/students/23K0623/23K0623-p010/pom.xml @@ -0,0 +1,13 @@ + + + 4.0.0 + + 23K0623 + ru.mirea.practice + 2024.1 + ../pom.xml + + 23K0623-p010 + Массивы + diff --git a/students/23K0623/23K0623-p010/src/main/java/ru/mirea/practice/s23k0623/Main.java b/students/23K0623/23K0623-p010/src/main/java/ru/mirea/practice/s23k0623/Main.java new file mode 100644 index 000000000..fe6e6b65c --- /dev/null +++ b/students/23K0623/23K0623-p010/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-p010/src/main/java/ru/mirea/practice/s23k0623/SortingStudentsByGpa.java b/students/23K0623/23K0623-p010/src/main/java/ru/mirea/practice/s23k0623/SortingStudentsByGpa.java new file mode 100644 index 000000000..0c0106427 --- /dev/null +++ b/students/23K0623/23K0623-p010/src/main/java/ru/mirea/practice/s23k0623/SortingStudentsByGpa.java @@ -0,0 +1,69 @@ +package ru.mirea.practice.s23k0623; + +import java.util.ArrayList; +import java.util.Comparator; + +class SortingStudentsByGpa extends ArrayList { + public void setArray(Student[] array) { + for (Student student : array) { + this.add(student); + } + } + + public void quicksort() { + this.sort(Comparator.comparingDouble(Student::getGpa).reversed()); + } + + public void mergeSort() { + this.mergeSort(0, this.size() - 1); + } + + private void mergeSort(int left, int right) { + if (left < right) { + int mid = left + (right - left) / 2; + mergeSort(left, mid); + mergeSort(mid + 1, right); + merge(left, mid, right); + } + } + + private void merge(int left, int mid, int right) { + int i = left; + int j = mid + 1; + ArrayList temp = new ArrayList<>(); + + while (i <= mid && j <= right) { + if (get(i).getGpa() >= get(j).getGpa()) { + temp.add(get(i)); + i++; + } else { + temp.add(get(j)); + j++; + } + } + + while (i <= mid) { + temp.add(get(i)); + i++; + } + + while (j <= right) { + temp.add(get(j)); + j++; + } + + for (int k = left; k <= right; k++) { + set(k, temp.get(k - left)); + } + } + + public void outArray() { + for (Student student : this) { + System.out.println(student); + } + } + + public void sortByField(Comparator comparator) { + this.sort(comparator); + } +} \ No newline at end of file diff --git a/students/23K0623/23K0623-p010/src/main/java/ru/mirea/practice/s23k0623/Student.java b/students/23K0623/23K0623-p010/src/main/java/ru/mirea/practice/s23k0623/Student.java new file mode 100644 index 000000000..a17302464 --- /dev/null +++ b/students/23K0623/23K0623-p010/src/main/java/ru/mirea/practice/s23k0623/Student.java @@ -0,0 +1,84 @@ +package ru.mirea.practice.s23k0623; + +public class Student { + private String id; + private String firstName; + private String lastName; + private String speciality; + private int course; + private String group; + private double gpa; + + public Student(String id, String firstName, String lastName, String speciality, int course, String group, double gpa) { + this.id = id; + this.firstName = firstName; + this.lastName = lastName; + this.speciality = speciality; + this.course = course; + this.group = group; + this.gpa = gpa; + } + + public String getId() { + return id; + } + + public void setId(String id) { + this.id = id; + } + + public String getFirstName() { + return firstName; + } + + public void setFirstName(String firstName) { + this.firstName = firstName; + } + + public String getLastName() { + return lastName; + } + + public void setLastName(String lastName) { + this.lastName = lastName; + } + + public String getSpeciality() { + return speciality; + } + + public void setSpeciality(String speciality) { + this.speciality = speciality; + } + + public int getCourse() { + return course; + } + + public void setCourse(int course) { + this.course = course; + } + + public String getGroup() { + return group; + } + + public void setGroup(String group) { + this.group = group; + } + + public double getGpa() { + return gpa; + } + + public void setGpa(double gpa) { + this.gpa = gpa; + } + + @Override + public String toString() { + return "Student{ " + "id:" + id + ", firstName=" + firstName + ", lastName=" + + lastName + ", speciality=" + speciality + ", course=" + course + + ", group=" + group + ", gpa=" + gpa + " }"; + } +} diff --git a/students/23K0623/23K0623-p010/src/main/java/ru/mirea/practice/s23k0623/Test1Student.java b/students/23K0623/23K0623-p010/src/main/java/ru/mirea/practice/s23k0623/Test1Student.java new file mode 100644 index 000000000..072a52792 --- /dev/null +++ b/students/23K0623/23K0623-p010/src/main/java/ru/mirea/practice/s23k0623/Test1Student.java @@ -0,0 +1,13 @@ +package ru.mirea.practice.s23k0623; + +public abstract class Test1Student { + public static void main(String[] args) { + Student student = new Student("104MN", "Иван", "Петров", "Инженер-программист", 3, "КВБО-01-25", 90); + System.out.println(student); + + student.setFirstName("Григорий"); + student.setCourse(4); + student.setGroup("КВБО-01-24"); + System.out.println(student); + } +} diff --git a/students/23K0623/23K0623-p010/src/main/java/ru/mirea/practice/s23k0623/Test2Student.java b/students/23K0623/23K0623-p010/src/main/java/ru/mirea/practice/s23k0623/Test2Student.java new file mode 100644 index 000000000..b69cc4cef --- /dev/null +++ b/students/23K0623/23K0623-p010/src/main/java/ru/mirea/practice/s23k0623/Test2Student.java @@ -0,0 +1,30 @@ +package ru.mirea.practice.s23k0623; + +import java.util.Comparator; + +public abstract class Test2Student { + public static void main(String[] args) { + Student[] studentArray = { + new Student("104MN", "Иван", "Петров", "Инженер-программист", 3, "КВБО-01-25", 90), + new Student("105DK", "Николай", "Олегович", "Инженер-конструктор", 4, "КАБО-06-12", 76), + new Student("104HQ", "Алиса", "Федоровна", "Инженер-механик", 2, "БПБО-09-73", 50), + new Student("113GN", "Екатерина", "Петровна", "программист-разработчик", 1, "КИБО-31-22", 84), + new Student("206MJ", "Петр", "Иванович", "Юрист", 3, "ЮРИО-01-22", 90) + }; + + SortingStudentsByGpa sortingStudentsByGpa = new SortingStudentsByGpa(); + sortingStudentsByGpa.setArray(studentArray); + + System.out.println("Быстрая сортировка по GPA:"); + sortingStudentsByGpa.quicksort(); + sortingStudentsByGpa.outArray(); + + System.out.println("\nСортировка слиянием по GPA:"); + sortingStudentsByGpa.mergeSort(); + sortingStudentsByGpa.outArray(); + + System.out.println("\nСортировка по фамилиям:"); + sortingStudentsByGpa.sortByField(Comparator.comparing(Student::getLastName)); + sortingStudentsByGpa.outArray(); + } +} diff --git a/students/23K0623/23K0623-p02/pom.xml b/students/23K0623/23K0623-p02/pom.xml new file mode 100644 index 000000000..c88b11ac2 --- /dev/null +++ b/students/23K0623/23K0623-p02/pom.xml @@ -0,0 +1,13 @@ + + + 4.0.0 + + 23K0623 + ru.mirea.practice + 2024.1 + ../pom.xml + + 23K0623-p02 + Классы Java + diff --git a/students/23K0623/23K0623-p02/src/main/java/ru/mirea/practice/s23k0623/Circle.java b/students/23K0623/23K0623-p02/src/main/java/ru/mirea/practice/s23k0623/Circle.java new file mode 100644 index 000000000..990611267 --- /dev/null +++ b/students/23K0623/23K0623-p02/src/main/java/ru/mirea/practice/s23k0623/Circle.java @@ -0,0 +1,19 @@ +package ru.mirea.practice.s23k0623; + +public class Circle { + private final Point center; + private final double radius; + + public Circle(Point center, double radius) { + this.center = center; + this.radius = radius; + } + + public Point getCenter() { + return center; + } + + public double getRadius() { + return radius; + } +} \ No newline at end of file diff --git a/students/23K0623/23K0623-p02/src/main/java/ru/mirea/practice/s23k0623/Point.java b/students/23K0623/23K0623-p02/src/main/java/ru/mirea/practice/s23k0623/Point.java new file mode 100644 index 000000000..c8e3cc6a9 --- /dev/null +++ b/students/23K0623/23K0623-p02/src/main/java/ru/mirea/practice/s23k0623/Point.java @@ -0,0 +1,19 @@ +package ru.mirea.practice.s23k0623; + +public class Point { + private final double x; + private final double y; + + public Point(double x, double y) { + this.x = x; + this.y = y; + } + + public double getX() { + return x; + } + + public double getY() { + return y; + } +} diff --git a/students/23K0623/23K0623-p02/src/main/java/ru/mirea/practice/s23k0623/Task1.java b/students/23K0623/23K0623-p02/src/main/java/ru/mirea/practice/s23k0623/Task1.java new file mode 100644 index 000000000..8b5a9ba3f --- /dev/null +++ b/students/23K0623/23K0623-p02/src/main/java/ru/mirea/practice/s23k0623/Task1.java @@ -0,0 +1,34 @@ +package ru.mirea.practice.s23k0623; + +public class Task1 { + private String name; + private String email; + private char gender; + + public Task1(String name, String email, char gender) { + this.name = name; + this.email = email; + this.gender = gender; + } + + public String getName() { + return name; + } + + public String getEmail() { + return email; + } + + public char getGender() { + return gender; + } + + public void setEmail(String email) { + this.email = email; + } + + @Override + public String toString() { + return "name = " + this.name + "\temail = " + this.email + "\tgender = " + this.gender; + } +} \ No newline at end of file diff --git a/students/23K0623/23K0623-p02/src/main/java/ru/mirea/practice/s23k0623/Task4.java b/students/23K0623/23K0623-p02/src/main/java/ru/mirea/practice/s23k0623/Task4.java new file mode 100644 index 000000000..7ad7cd9fe --- /dev/null +++ b/students/23K0623/23K0623-p02/src/main/java/ru/mirea/practice/s23k0623/Task4.java @@ -0,0 +1,53 @@ +package ru.mirea.practice.s23k0623; + +import java.util.Arrays; +import java.util.Objects; +import java.util.Scanner; + +public class Task4 { + private String[] shop; + private int count; + + public Task4(int countComputers) { + this.shop = new String[countComputers]; + this.count = 0; + + } + + public void append() { + try (Scanner scanner = new Scanner(System.in)) { + System.out.println("Введите название компьютера: "); + String computerName = scanner.nextLine(); + if (count == shop.length) { + System.out.println("Массив переполнен"); + return; + } + this.shop[count] = computerName; + count++; + } + } + + public String find(String compName) { + for (int i = 0; i < count; i++) { + if (Objects.equals(shop[i], compName)) { + return compName; + } + } + return "0"; + } + + + public void pop() { + this.shop = Arrays.copyOf(this.shop, this.shop.length - 1); + count--; + } + + @Override + public String toString() { + String str = ""; + for (int i = 0; i < count; i++) { + str += shop[i] + " \n"; + } + return str; + } +} \ No newline at end of file diff --git a/students/23K0623/23K0623-p02/src/main/java/ru/mirea/practice/s23k0623/Tester.java b/students/23K0623/23K0623-p02/src/main/java/ru/mirea/practice/s23k0623/Tester.java new file mode 100644 index 000000000..5ea1dea5a --- /dev/null +++ b/students/23K0623/23K0623-p02/src/main/java/ru/mirea/practice/s23k0623/Tester.java @@ -0,0 +1,29 @@ +package ru.mirea.practice.s23k0623; + +public class Tester { + private final Circle[] circles; + private int count; + + public Tester(int capacity) { + circles = new Circle[capacity]; + count = 0; + } + + public void addCircle(Circle circle) { + if (count < circles.length) { + circles[count] = circle; + count++; + } else { + System.out.println("Массив заполнен!"); + } + } + + public void printCircles() { + for (int i = 0; i < count; i++) { + System.out.println("Окружность " + (i + 1) + ":"); + System.out.println("Центр: (" + circles[i].getCenter().getX() + ", " + circles[i].getCenter().getY() + ")"); + System.out.println("Радиус: " + circles[i].getRadius()); + System.out.println(); + } + } +} \ No newline at end of file diff --git a/students/23K0623/23K0623-p03/pom.xml b/students/23K0623/23K0623-p03/pom.xml new file mode 100644 index 000000000..9e38e160d --- /dev/null +++ b/students/23K0623/23K0623-p03/pom.xml @@ -0,0 +1,13 @@ + + + 4.0.0 + + 23K0623 + ru.mirea.practice + 2024.1 + ../pom.xml + + 23K0623-p03 + Массивы + diff --git a/students/23K0623/23K0623-p03/src/main/java/ru/mirea/practice/s23k0623/Task1.java b/students/23K0623/23K0623-p03/src/main/java/ru/mirea/practice/s23k0623/Task1.java new file mode 100644 index 000000000..16536c8bc --- /dev/null +++ b/students/23K0623/23K0623-p03/src/main/java/ru/mirea/practice/s23k0623/Task1.java @@ -0,0 +1,25 @@ +package ru.mirea.practice.s23k0623; + +import java.util.Arrays; +import java.util.Random; +import java.util.Scanner; + +public abstract class Task1 { + public static void main(String[] args) { + Random rand = new Random(); + try (Scanner sc = new Scanner(System.in)) { + System.out.print("Введите размер массива: "); + float[] a = new float[sc.nextInt()]; + for (int i = 0; i < a.length; i++) { + if (i % 2 == 0) { + a[i] = rand.nextFloat(); + } else { + a[i] = (float) Math.random(); + } + } + System.out.println(Arrays.toString(a)); + Arrays.sort(a); + System.out.println("Отсортированный массив: " + Arrays.toString(a)); + } + } +} diff --git a/students/23K0623/23K0623-p03/src/main/java/ru/mirea/practice/s23k0623/Task3.java b/students/23K0623/23K0623-p03/src/main/java/ru/mirea/practice/s23k0623/Task3.java new file mode 100644 index 000000000..36f9f9504 --- /dev/null +++ b/students/23K0623/23K0623-p03/src/main/java/ru/mirea/practice/s23k0623/Task3.java @@ -0,0 +1,40 @@ +package ru.mirea.practice.s23k0623; + +import java.util.Random; + +public final class Task3 { + + private Task3() { + // Тут всё ещё пусто + } + + public static void main(String[] args) { + + int[] arr = new int[4]; + Random random = new Random(); + + for (int i = 0; i < arr.length; i++) { + arr[i] = 10 + random.nextInt(90); + } + + System.out.print("Массив: "); + for (int num : arr) { + System.out.print(num + " "); + } + System.out.println(); + + boolean isIncreasing = true; + for (int i = 1; i < arr.length; i++) { + if (arr[i] <= arr[i - 1]) { + isIncreasing = false; + break; + } + } + + if (isIncreasing) { + System.out.println("Массив возрастающий."); + } else { + System.out.println("Массив не возрастающий."); + } + } +} \ No newline at end of file diff --git a/students/23K0623/23K0623-p03/src/main/java/ru/mirea/practice/s23k0623/Task4.java b/students/23K0623/23K0623-p03/src/main/java/ru/mirea/practice/s23k0623/Task4.java new file mode 100644 index 000000000..943de2df9 --- /dev/null +++ b/students/23K0623/23K0623-p03/src/main/java/ru/mirea/practice/s23k0623/Task4.java @@ -0,0 +1,47 @@ +package ru.mirea.practice.s23k0623; + +import java.util.Arrays; +import java.util.Random; +import java.util.Scanner; + +public abstract class Task4 { + public static void main(String[] args) { + try (Scanner sc = new Scanner(System.in)) { + Random rand = new Random(); + int n; + while (true) { + System.out.print("\nВведите размер массива n: "); + n = sc.nextInt(); + if (n <= 1) { + System.out.println("Неверное число, повторите ввод"); + } else { + break; + } + } + int[] a = new int[n]; + int ch = 0; + for (int i = 0; i < n; i++) { + a[i] = rand.nextInt(n + 1); + if (a[i] % 2 == 0) { + ch++; + } + } + System.out.println(Arrays.toString(a)); + if (ch > 0) { + int[] c = new int[ch]; + int i = 0; + int x = 0; + while (i < ch) { + if (a[x] % 2 == 0) { + c[i] = a[x]; + i++; + x++; + } else { + x++; + } + } + System.out.println(Arrays.toString(c)); + } + } + } +} \ No newline at end of file diff --git a/students/23K0623/23K0623-p04/pom.xml b/students/23K0623/23K0623-p04/pom.xml new file mode 100644 index 000000000..eca38be22 --- /dev/null +++ b/students/23K0623/23K0623-p04/pom.xml @@ -0,0 +1,13 @@ + + + 4.0.0 + + 23K0623 + ru.mirea.practice + 2024.1 + ../pom.xml + + 23K0623-p04 + Массивы + diff --git a/students/23K0623/23K0623-p04/src/main/java/ru/mirea/practice/s23k0623/Task4.java b/students/23K0623/23K0623-p04/src/main/java/ru/mirea/practice/s23k0623/Task4.java new file mode 100644 index 000000000..23309f20a --- /dev/null +++ b/students/23K0623/23K0623-p04/src/main/java/ru/mirea/practice/s23k0623/Task4.java @@ -0,0 +1,97 @@ +package ru.mirea.practice.s23k0623; + +public class Task4 { + private double[][] data; + private int rows; + private int cols; + + public Task4(int rows, int cols) { + this.rows = rows; + this.cols = cols; + this.data = new double[rows][cols]; + } + + public void setElement(int row, int col, double value) { + if (row >= 0 && row < rows && col >= 0 && col < cols) { + data[row][col] = value; + } else { + throw new IndexOutOfBoundsException("Неверный номер строки или столбца"); + } + } + + public Task4 add(Task4 other) { + if (this.rows != other.rows || this.cols != other.cols) { + throw new IllegalArgumentException("Матрицы разного размера"); + } + + Task4 result = new Task4(this.rows, this.cols); + for (int i = 0; i < this.rows; i++) { + for (int j = 0; j < this.cols; j++) { + result.data[i][j] = this.data[i][j] + other.data[i][j]; + } + } + return result; + } + + public Task4 multiplyByScalar(double scalar) { + Task4 result = new Task4(this.rows, this.cols); + for (int i = 0; i < this.rows; i++) { + for (int j = 0; j < this.cols; j++) { + result.data[i][j] = this.data[i][j] * scalar; + } + } + return result; + } + + public void print() { + for (int i = 0; i < this.rows; i++) { + for (int j = 0; j < this.cols; j++) { + System.out.printf("%10.2f ", data[i][j]); + } + System.out.println(); + } + } + + public Task4 multiply(Task4 other) { + if (this.cols != other.rows) { + throw new IllegalArgumentException("Матрицы несовместимы для умножения"); + } + + Task4 result = new Task4(this.rows, other.cols); + for (int i = 0; i < this.rows; i++) { + for (int j = 0; j < other.cols; j++) { + for (int k = 0; k < this.cols; k++) { + result.data[i][j] += this.data[i][k] * other.data[k][j]; + } + } + } + return result; + } + + public static void main(String[] args) { + + Task4 matrix1 = new Task4(2, 2); + matrix1.setElement(0, 0, 1.0); + matrix1.setElement(0, 1, 2.0); + matrix1.setElement(1, 0, 3.0); + matrix1.setElement(1, 1, 4.0); + + Task4 matrix2 = new Task4(2, 2); + matrix2.setElement(0, 0, 5.0); + matrix2.setElement(0, 1, 6.0); + matrix2.setElement(1, 0, 7.0); + matrix2.setElement(1, 1, 8.0); + + Task4 sum = matrix1.add(matrix2); + System.out.println("Сумма матриц:"); + sum.print(); + + Task4 scalarMult = matrix1.multiplyByScalar(2.0); + System.out.println("Скалярное произведение:"); + scalarMult.print(); + + Task4 product = matrix1.multiply(matrix2); + System.out.println("Произведение матриц:"); + product.print(); + } +} diff --git a/students/23K0623/23K0623-p041/pom.xml b/students/23K0623/23K0623-p041/pom.xml new file mode 100644 index 000000000..dcaa12ef6 --- /dev/null +++ b/students/23K0623/23K0623-p041/pom.xml @@ -0,0 +1,13 @@ + + + 4.0.0 + + 23K0623 + ru.mirea.practice + 2024.1 + ../pom.xml + + 23K0623-p041 + Массивы + diff --git a/students/23K0623/23K0623-p041/src/main/java/ru/mirea/practice/s23k0623/Main.java b/students/23K0623/23K0623-p041/src/main/java/ru/mirea/practice/s23k0623/Main.java new file mode 100644 index 000000000..b2fb65d56 --- /dev/null +++ b/students/23K0623/23K0623-p041/src/main/java/ru/mirea/practice/s23k0623/Main.java @@ -0,0 +1,19 @@ +package ru.mirea.practice.s23k0623; + +public abstract class Main { + public static void main(String[] args) { + final Phone phone1 = new Phone("1234", "Xiaomi", 250f); + final Phone phone2 = new Phone("+7911", "iPhone", 125.3f); + final Phone phone3 = new Phone("+9528", "Samsung", 212f); + + phone1.recieveCall("Андрей"); + + System.out.println(phone1.getNumber()); + System.out.println(phone2.getNumber()); + System.out.println(phone3.getNumber()); + + phone3.recieveCall("Саня", "777"); + + phone2.sendMessage("222", "191", "2024", "89032779970"); + } +} diff --git a/students/23K0623/23K0623-p041/src/main/java/ru/mirea/practice/s23k0623/Matrix.java b/students/23K0623/23K0623-p041/src/main/java/ru/mirea/practice/s23k0623/Matrix.java new file mode 100644 index 000000000..fd7b3d754 --- /dev/null +++ b/students/23K0623/23K0623-p041/src/main/java/ru/mirea/practice/s23k0623/Matrix.java @@ -0,0 +1,72 @@ +package ru.mirea.practice.s23k0623; + +public class Matrix { + private final double[][] matrix; + private final int rows; + private final int cols; + + public Matrix(int rows, int cols) { + this.rows = rows; + this.cols = cols; + this.matrix = new double[rows][cols]; + } + + public void setElement(int row, int col, double value) { + if (row >= 0 && row < rows && col >= 0 && col < cols) { + this.matrix[row][col] = value; + } + } + + public Matrix add(Matrix other) { + if (this.rows != other.rows || this.cols != other.cols) { + System.out.println("Матрицы разных размеров, сложение невозможно."); + return null; + } + + Matrix result = new Matrix(this.rows, this.cols); + for (int i = 0; i < this.rows; i++) { + for (int j = 0; j < this.cols; j++) { + result.setElement(i, j, this.matrix[i][j] + other.matrix[i][j]); + } + } + return result; + } + + public Matrix multiplyByNumber(double number) { + Matrix result = new Matrix(this.rows, this.cols); + for (int i = 0; i < this.rows; i++) { + for (int j = 0; j < this.cols; j++) { + result.setElement(i, j, this.matrix[i][j] * number); + } + } + return result; + } + + public void print() { + for (int i = 0; i < rows; i++) { + for (int j = 0; j < cols; j++) { + System.out.print(matrix[i][j] + " "); + } + System.out.println(); + } + } + + public Matrix multiplyMatrix(Matrix other) { + if (this.cols != other.rows) { + System.out.println("Матрицы не могут быть перемножены."); + return null; + } + + Matrix result = new Matrix(this.rows, other.cols); + for (int i = 0; i < this.rows; i++) { + for (int j = 0; j < other.cols; j++) { + for (int k = 0; k < this.cols; k++) { + result.matrix[i][j] += this.matrix[i][k] * other.matrix[k][j]; + } + } + } + return result; + } + + +} diff --git a/students/23K0623/23K0623-p041/src/main/java/ru/mirea/practice/s23k0623/MatrixTest.java b/students/23K0623/23K0623-p041/src/main/java/ru/mirea/practice/s23k0623/MatrixTest.java new file mode 100644 index 000000000..31d5f13e6 --- /dev/null +++ b/students/23K0623/23K0623-p041/src/main/java/ru/mirea/practice/s23k0623/MatrixTest.java @@ -0,0 +1,34 @@ +package ru.mirea.practice.s23k0623; + +public abstract class MatrixTest { + public static void main(String[] args) { + Matrix matrix1 = new Matrix(2, 2); + matrix1.setElement(0, 0, 1); + matrix1.setElement(0, 1, 2); + matrix1.setElement(1, 0, 3); + matrix1.setElement(1, 1, 4); + + Matrix matrix2 = new Matrix(2, 2); + matrix2.setElement(0, 0, 5); + matrix2.setElement(0, 1, 6); + matrix2.setElement(1, 0, 7); + matrix2.setElement(1, 1, 8); + + Matrix sum = matrix1.add(matrix2); + if (sum != null) { + System.out.println("Результат сложения матриц:"); + sum.print(); + } + + Matrix multipliedByNumber = matrix1.multiplyByNumber(2); + System.out.println("Матрица, умноженная на 2:"); + multipliedByNumber.print(); + + Matrix multiplied = matrix1.multiplyMatrix(matrix2); + if (multiplied != null) { + System.out.println("Результат умножения матриц:"); + multiplied.print(); + } + + } +} diff --git a/students/23K0623/23K0623-p041/src/main/java/ru/mirea/practice/s23k0623/Phone.java b/students/23K0623/23K0623-p041/src/main/java/ru/mirea/practice/s23k0623/Phone.java new file mode 100644 index 000000000..a197704ab --- /dev/null +++ b/students/23K0623/23K0623-p041/src/main/java/ru/mirea/practice/s23k0623/Phone.java @@ -0,0 +1,41 @@ +package ru.mirea.practice.s23k0623; + +public class Phone { + String number; + String model; + float weight = 0; + + public Phone() { + // Default constructor + } + + public Phone(String number, String model) { + this.number = number; + this.model = model; + } + + public Phone(String number, String model, float weight) { + Phone phone = new Phone(number, model); + this.number = phone.number; + this.model = phone.number; + this.weight = weight; + } + + public void recieveCall(String caller) { + System.out.println("Звонит " + caller); + } + + public void recieveCall(String caller, String number) { + System.out.println("Звонит " + caller + " по номеру " + number); + } + + public void sendMessage(String... args) { + for (String arg : args) { + System.out.println(arg); + } + } + + public String getNumber() { + return number; + } +} diff --git a/students/23K0623/23K0623-p041/src/main/java/ru/mirea/practice/s23k0623/Task3.java b/students/23K0623/23K0623-p041/src/main/java/ru/mirea/practice/s23k0623/Task3.java new file mode 100644 index 000000000..dd675e0d0 --- /dev/null +++ b/students/23K0623/23K0623-p041/src/main/java/ru/mirea/practice/s23k0623/Task3.java @@ -0,0 +1,40 @@ +package ru.mirea.practice.s23k0623; + +public class Task3 { + private String fullName; + private int age; + + public String getFullName() { + return fullName; + } + + public void setFullName(String fullName) { + this.fullName = fullName; + } + + public int getAge() { + return age; + } + + public void setAge(int age) { + this.age = age; + } + + public Task3(String fullName, int age) { + this.fullName = fullName; + this.age = age; + } + + public Task3() { + this.fullName = "Name Surname"; + this.age = 0; + } + + public void talk() { + System.out.println(this.fullName + " говорит."); + } + + public void move() { + System.out.println(this.fullName + " идёт."); + } +} diff --git a/students/23K0623/23K0623-p05/pom.xml b/students/23K0623/23K0623-p05/pom.xml new file mode 100644 index 000000000..ed4d98327 --- /dev/null +++ b/students/23K0623/23K0623-p05/pom.xml @@ -0,0 +1,13 @@ + + + 4.0.0 + + 23K0623 + ru.mirea.practice + 2024.1 + ../pom.xml + + 23K0623-p05 + Массивы + diff --git a/students/23K0623/23K0623-p05/src/main/java/ru/mirea/practice/s23k0623/Main.java b/students/23K0623/23K0623-p05/src/main/java/ru/mirea/practice/s23k0623/Main.java new file mode 100644 index 000000000..98ea07e0d --- /dev/null +++ b/students/23K0623/23K0623-p05/src/main/java/ru/mirea/practice/s23k0623/Main.java @@ -0,0 +1,29 @@ +package ru.mirea.practice.s23k0623; + +import javax.swing.ImageIcon; +import javax.swing.JFrame; +import javax.swing.JPanel; +import javax.swing.JLabel; + +public abstract class Main { + public static void main(String[] args) { + JFrame frame = new JFrame(); + frame.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE); + frame.setSize(700, 450); + + JPanel panel = new JPanel(); + ImageIcon image; + try { + image = new ImageIcon(args[0]); + } catch (Exception e) { + throw new RuntimeException(e); + } + + System.out.println(image); + + panel.add(new JLabel(image)); + frame.add(panel); + frame.pack(); + frame.setVisible(true); + } +} \ No newline at end of file diff --git a/students/23K0623/23K0623-p05/src/main/java/ru/mirea/practice/s23k0623/Task1.java b/students/23K0623/23K0623-p05/src/main/java/ru/mirea/practice/s23k0623/Task1.java new file mode 100644 index 000000000..c4fd9b126 --- /dev/null +++ b/students/23K0623/23K0623-p05/src/main/java/ru/mirea/practice/s23k0623/Task1.java @@ -0,0 +1,100 @@ +package ru.mirea.practice.s23k0623; + +import javax.swing.JButton; +import javax.swing.JFrame; +import javax.swing.JLabel; +import javax.swing.JPanel; +import java.awt.BorderLayout; +import java.awt.FlowLayout; +import java.awt.GridLayout; +import javax.swing.SwingConstants; // Импорт SwingConstants +import java.awt.event.ActionEvent; +import java.awt.event.ActionListener; + +public class Task1 extends JFrame { + private int milanScore = 0; + private int madridScore = 0; + + private JLabel resultLabel; + private JLabel lastScorerLabel; + private JLabel winnerLabel; // Метка для отображения победителя + + public Task1() { + setTitle("Match AC Milan vs Real Madrid"); // Название окна + setSize(400, 200); // Размер окна + setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE); // Завершение программы при закрытии окна + setLayout(new BorderLayout()); // Основная компоновка - BorderLayout + + // Панель для кнопок + JPanel buttonPanel = new JPanel(); + buttonPanel.setLayout(new FlowLayout()); // Кнопки будут на одной линии + + // Кнопка для команды AC Milan + JButton milanButton = new JButton("AC Milan"); + // Кнопка для команды Real Madrid + JButton madridButton = new JButton("Real Madrid"); + + // Добавляем кнопки на панель + buttonPanel.add(milanButton); + buttonPanel.add(madridButton); + + // Метки + resultLabel = new JLabel("Result: 0 X 0", SwingConstants.CENTER); + lastScorerLabel = new JLabel("Last Scorer: N/A", SwingConstants.CENTER); + winnerLabel = new JLabel("Winner: DRAW", SwingConstants.CENTER); + + // Панель для меток + JPanel labelPanel = new JPanel(); + labelPanel.setLayout(new GridLayout(3, 1)); // Метки будут друг под другом + + // Добавляем метки на панель + labelPanel.add(resultLabel); + labelPanel.add(lastScorerLabel); + labelPanel.add(winnerLabel); + + // Добавляем панели на основное окно + add(buttonPanel, BorderLayout.NORTH); // Панель с кнопками наверху + add(labelPanel, BorderLayout.CENTER); // Панель с метками по центру + + // Обработчик событий для кнопки AC Milan + milanButton.addActionListener(new ActionListener() { + @Override + public void actionPerformed(ActionEvent e) { + milanScore++; // Увеличиваем счет Милана + updateScore("AC Milan"); + } + }); + + // Обработчик событий для кнопки Real Madrid + madridButton.addActionListener(new ActionListener() { + @Override + public void actionPerformed(ActionEvent e) { + madridScore++; // Увеличиваем счет Мадрида + updateScore("Real Madrid"); + } + }); + + setVisible(true); // Делаем окно видимым + } + + // Метод для обновления счета, последней забившей команды и победителя + private void updateScore(String lastScorer) { + // Обновляем метку с результатом + resultLabel.setText("Result: " + milanScore + " X " + madridScore); + // Обновляем метку с последней забившей командой + lastScorerLabel.setText("Last Scorer: " + lastScorer); + // Определяем победителя + if (milanScore > madridScore) { + winnerLabel.setText("Winner: AC Milan"); + } else if (milanScore < madridScore) { + winnerLabel.setText("Winner: Real Madrid"); + } else { + winnerLabel.setText("Winner: DRAW"); + } + } + + public static void main(String[] args) { + // Запуск программы + new Task1(); + } +} \ No newline at end of file diff --git a/students/23K0623/23K0623-p06/pom.xml b/students/23K0623/23K0623-p06/pom.xml new file mode 100644 index 000000000..7b3023d18 --- /dev/null +++ b/students/23K0623/23K0623-p06/pom.xml @@ -0,0 +1,13 @@ + + + 4.0.0 + + 23K0623 + ru.mirea.practice + 2024.1 + ../pom.xml + + 23K0623-p06 + Массивы + diff --git a/students/23K0623/23K0623-p06/src/main/java/ru/mirea/practice/s23k0623/Animal.java b/students/23K0623/23K0623-p06/src/main/java/ru/mirea/practice/s23k0623/Animal.java new file mode 100644 index 000000000..5cd10150d --- /dev/null +++ b/students/23K0623/23K0623-p06/src/main/java/ru/mirea/practice/s23k0623/Animal.java @@ -0,0 +1,15 @@ +package ru.mirea.practice.s23k0623; + +public class Animal implements Nameable { + private final String name; + + public Animal(String name) { + this.name = name; + } + + @Override + public String getName() { + return name; + } +} + diff --git a/students/23K0623/23K0623-p06/src/main/java/ru/mirea/practice/s23k0623/Man.java b/students/23K0623/23K0623-p06/src/main/java/ru/mirea/practice/s23k0623/Man.java new file mode 100644 index 000000000..504a8bf88 --- /dev/null +++ b/students/23K0623/23K0623-p06/src/main/java/ru/mirea/practice/s23k0623/Man.java @@ -0,0 +1,14 @@ +package ru.mirea.practice.s23k0623; + +public class Man implements Nameable { + private String name; + + public Man(String name) { + this.name = name; + } + + @Override + public String getName() { + return name; + } +} diff --git a/students/23K0623/23K0623-p06/src/main/java/ru/mirea/practice/s23k0623/Movable.java b/students/23K0623/23K0623-p06/src/main/java/ru/mirea/practice/s23k0623/Movable.java new file mode 100644 index 000000000..4f9ed1002 --- /dev/null +++ b/students/23K0623/23K0623-p06/src/main/java/ru/mirea/practice/s23k0623/Movable.java @@ -0,0 +1,12 @@ +package ru.mirea.practice.s23k0623; + +public interface Movable { + void moveUp(); + + void moveDown(); + + void moveLeft(); + + void moveRight(); + +} diff --git a/students/23K0623/23K0623-p06/src/main/java/ru/mirea/practice/s23k0623/MovablePoint.java b/students/23K0623/23K0623-p06/src/main/java/ru/mirea/practice/s23k0623/MovablePoint.java new file mode 100644 index 000000000..0e09be4c0 --- /dev/null +++ b/students/23K0623/23K0623-p06/src/main/java/ru/mirea/practice/s23k0623/MovablePoint.java @@ -0,0 +1,41 @@ +package ru.mirea.practice.s23k0623; + + +public class MovablePoint implements Movable { + public double x; + public double y; + public double xspeed; + public double yspeed; + + public MovablePoint(double x, double y, double xspeed, double yspeed) { + this.x = x; + this.y = y; + this.xspeed = xspeed; + this.yspeed = yspeed; + } + + public void moveUp() { + this.y += yspeed; + } + + public void moveDown() { + this.y -= yspeed; + } + + public void moveLeft() { + this.x -= xspeed; + } + + public void moveRight() { + this.x += xspeed; + } + + @Override + public String toString() { + return "Movable point:\n" + + "x = " + x + "\n" + + "y = " + y + "\n" + + "xSpeed = " + xspeed + "\n" + + "ySpeed = " + yspeed + "\n"; + } +} diff --git a/students/23K0623/23K0623-p06/src/main/java/ru/mirea/practice/s23k0623/MovableRectangle.java b/students/23K0623/23K0623-p06/src/main/java/ru/mirea/practice/s23k0623/MovableRectangle.java new file mode 100644 index 000000000..7e5a27c89 --- /dev/null +++ b/students/23K0623/23K0623-p06/src/main/java/ru/mirea/practice/s23k0623/MovableRectangle.java @@ -0,0 +1,64 @@ +package ru.mirea.practice.s23k0623; + + +public class MovableRectangle implements Movable { + + private MovablePoint topLeft; + private MovablePoint bottomRight; + + public MovableRectangle(int x1, int x2, int y1, int y2, int xspeed, int yspeed) { + this.topLeft = new MovablePoint(x1, y1, xspeed, yspeed); + this.bottomRight = new MovablePoint(x2, y2, xspeed, yspeed); + } + + private boolean hasSameSpeed() { + return topLeft.xspeed == bottomRight.xspeed && topLeft.yspeed == bottomRight.yspeed; + } + + @Override + public void moveUp() { + if (hasSameSpeed()) { + topLeft.moveUp(); + bottomRight.moveUp(); + } else { + System.out.println("We need SAME SPEED!!"); + } + } + + @Override + public void moveDown() { + if (hasSameSpeed()) { + topLeft.moveDown(); + bottomRight.moveDown(); + } else { + System.out.println("We need SAME SPEED!!"); + } + } + + @Override + public void moveLeft() { + if (hasSameSpeed()) { + topLeft.moveLeft(); + bottomRight.moveLeft(); + } else { + System.out.println("We need SAME SPEED!!"); + } + } + + @Override + public void moveRight() { + if (hasSameSpeed()) { + topLeft.moveRight(); + bottomRight.moveRight(); + } else { + System.out.println("We need SAME SPEED!!"); + } + } + + @Override + public String toString() { + return "Movable rectangle:\n" + + "topLeft: " + topLeft + '\n' + + "bottonRight: " + bottomRight + '\n'; + } +} diff --git a/students/23K0623/23K0623-p06/src/main/java/ru/mirea/practice/s23k0623/Nameable.java b/students/23K0623/23K0623-p06/src/main/java/ru/mirea/practice/s23k0623/Nameable.java new file mode 100644 index 000000000..a289f3cff --- /dev/null +++ b/students/23K0623/23K0623-p06/src/main/java/ru/mirea/practice/s23k0623/Nameable.java @@ -0,0 +1,5 @@ +package ru.mirea.practice.s23k0623; + +public interface Nameable { + String getName(); +} diff --git a/students/23K0623/23K0623-p06/src/main/java/ru/mirea/practice/s23k0623/Planet.java b/students/23K0623/23K0623-p06/src/main/java/ru/mirea/practice/s23k0623/Planet.java new file mode 100644 index 000000000..863af7310 --- /dev/null +++ b/students/23K0623/23K0623-p06/src/main/java/ru/mirea/practice/s23k0623/Planet.java @@ -0,0 +1,15 @@ +package ru.mirea.practice.s23k0623; + +public class Planet implements Nameable { + private String name; + + public Planet(String name) { + this.name = name; + } + + @Override + public String getName() { + return name; + } +} + diff --git a/students/23K0623/23K0623-p06/src/main/java/ru/mirea/practice/s23k0623/TestNameable.java b/students/23K0623/23K0623-p06/src/main/java/ru/mirea/practice/s23k0623/TestNameable.java new file mode 100644 index 000000000..e7865c0cf --- /dev/null +++ b/students/23K0623/23K0623-p06/src/main/java/ru/mirea/practice/s23k0623/TestNameable.java @@ -0,0 +1,15 @@ +package ru.mirea.practice.s23k0623; + +public abstract class TestNameable { + + public static void main(String[] args) { + Nameable earth = new Planet("Земля"); + Nameable tesla = new Man("Иван Иванов"); + Nameable dog = new Animal("Корги"); + + System.out.println("Planet: " + earth.getName()); + System.out.println("Man: " + tesla.getName()); + System.out.println("Animal: " + dog.getName()); + } +} + diff --git a/students/23K0623/23K0623-p06/src/main/java/ru/mirea/practice/s23k0623/Tester.java b/students/23K0623/23K0623-p06/src/main/java/ru/mirea/practice/s23k0623/Tester.java new file mode 100644 index 000000000..95c28f96f --- /dev/null +++ b/students/23K0623/23K0623-p06/src/main/java/ru/mirea/practice/s23k0623/Tester.java @@ -0,0 +1,13 @@ +package ru.mirea.practice.s23k0623; + +public abstract class Tester { + public static void main(String[] args) { + System.out.println("\n"); + + MovableRectangle rectangle = new MovableRectangle(1, 3, 1, 3, 10, 5); + System.out.println(rectangle); + rectangle.moveRight(); + rectangle.moveDown(); + System.out.println(rectangle); + } +} diff --git a/students/23K0623/23K0623-p07/pom.xml b/students/23K0623/23K0623-p07/pom.xml new file mode 100644 index 000000000..070679aea --- /dev/null +++ b/students/23K0623/23K0623-p07/pom.xml @@ -0,0 +1,13 @@ + + + 4.0.0 + + 23K0623 + ru.mirea.practice + 2024.1 + ../pom.xml + + 23K0623-p07 + Массивы + diff --git a/students/23K0623/23K0623-p07/src/main/java/ru/mirea/practice/s23k0623/Main.java b/students/23K0623/23K0623-p07/src/main/java/ru/mirea/practice/s23k0623/Main.java new file mode 100644 index 000000000..b73e1227d --- /dev/null +++ b/students/23K0623/23K0623-p07/src/main/java/ru/mirea/practice/s23k0623/Main.java @@ -0,0 +1,15 @@ +package ru.mirea.practice.s23k0623; + +public abstract class Main { + public static void main(String[] args) { + MathCalculable mc1 = new MathFunc(); + + System.out.println("2^3 = " + mc1.pow(2, 3)); + + System.out.println("|3 + 4i| = " + mc1.abs(3, 4)); + + MathFunc mathFunc = new MathFunc(); + System.out.println("Длина окружности радиусом 5 = " + mathFunc.circumference(5)); + } +} + diff --git a/students/23K0623/23K0623-p07/src/main/java/ru/mirea/practice/s23k0623/MathCalculable.java b/students/23K0623/23K0623-p07/src/main/java/ru/mirea/practice/s23k0623/MathCalculable.java new file mode 100644 index 000000000..c0c0694d6 --- /dev/null +++ b/students/23K0623/23K0623-p07/src/main/java/ru/mirea/practice/s23k0623/MathCalculable.java @@ -0,0 +1,10 @@ +package ru.mirea.practice.s23k0623; + +public interface MathCalculable { + double PI = 3.14159265359; + + double pow(double base, int exponent); + + double abs(double real, double imaginary); +} + diff --git a/students/23K0623/23K0623-p07/src/main/java/ru/mirea/practice/s23k0623/MathFunc.java b/students/23K0623/23K0623-p07/src/main/java/ru/mirea/practice/s23k0623/MathFunc.java new file mode 100644 index 000000000..1023d5621 --- /dev/null +++ b/students/23K0623/23K0623-p07/src/main/java/ru/mirea/practice/s23k0623/MathFunc.java @@ -0,0 +1,18 @@ +package ru.mirea.practice.s23k0623; + +public class MathFunc implements MathCalculable { + @Override + public double pow(double base, int exponent) { + return Math.pow(base, exponent); + } + + @Override + public double abs(double real, double imaginary) { + return Math.sqrt(real * real + imaginary * imaginary); + } + + public double circumference(double radius) { + return 2 * PI * radius; + } +} + diff --git a/students/23K0623/23K0623-p07/src/main/java/ru/mirea/practice/s23k0623/task2/Book.java b/students/23K0623/23K0623-p07/src/main/java/ru/mirea/practice/s23k0623/task2/Book.java new file mode 100644 index 000000000..6e98d0c76 --- /dev/null +++ b/students/23K0623/23K0623-p07/src/main/java/ru/mirea/practice/s23k0623/task2/Book.java @@ -0,0 +1,15 @@ +package ru.mirea.practice.s23k0623.task2; + +public class Book implements Printable { + private String title; + + public Book(String title) { + this.title = title; + } + + @Override + public void print() { + System.out.println("Book title: " + title); + } +} + diff --git a/students/23K0623/23K0623-p07/src/main/java/ru/mirea/practice/s23k0623/task2/Magazine.java b/students/23K0623/23K0623-p07/src/main/java/ru/mirea/practice/s23k0623/task2/Magazine.java new file mode 100644 index 000000000..88d37f2a8 --- /dev/null +++ b/students/23K0623/23K0623-p07/src/main/java/ru/mirea/practice/s23k0623/task2/Magazine.java @@ -0,0 +1,24 @@ +package ru.mirea.practice.s23k0623.task2; + +public class Magazine implements Printable { + private String title; + + public Magazine(String title) { + this.title = title; + } + + @Override + public void print() { + System.out.println("Magazine title: " + title); + } + + public static void printMagazines(Printable[] printables) { + for (Printable printable : printables) { + if (printable instanceof Magazine) { + Magazine magazine = (Magazine) printable; + System.out.println(magazine.title); + } + } + } +} + diff --git a/students/23K0623/23K0623-p07/src/main/java/ru/mirea/practice/s23k0623/task2/Main.java b/students/23K0623/23K0623-p07/src/main/java/ru/mirea/practice/s23k0623/task2/Main.java new file mode 100644 index 000000000..83018121b --- /dev/null +++ b/students/23K0623/23K0623-p07/src/main/java/ru/mirea/practice/s23k0623/task2/Main.java @@ -0,0 +1,16 @@ +package ru.mirea.practice.s23k0623.task2; + +public abstract class Main { + public static void main(String[] args) { + Printable[] printables = new Printable[] { + new Book("The Great Gatsby"), + new Magazine("National Geographic"), + new Book("1984"), + new Magazine("TIME") + }; + + System.out.println("List of magazines:"); + Magazine.printMagazines(printables); + } +} + diff --git a/students/23K0623/23K0623-p07/src/main/java/ru/mirea/practice/s23k0623/task2/Printable.java b/students/23K0623/23K0623-p07/src/main/java/ru/mirea/practice/s23k0623/task2/Printable.java new file mode 100644 index 000000000..7669066cf --- /dev/null +++ b/students/23K0623/23K0623-p07/src/main/java/ru/mirea/practice/s23k0623/task2/Printable.java @@ -0,0 +1,5 @@ +package ru.mirea.practice.s23k0623.task2; + +public interface Printable { + void print(); +} diff --git a/students/23K0623/23K0623-p08/pom.xml b/students/23K0623/23K0623-p08/pom.xml new file mode 100644 index 000000000..ee6f0ba49 --- /dev/null +++ b/students/23K0623/23K0623-p08/pom.xml @@ -0,0 +1,13 @@ + + + 4.0.0 + + 23K0623 + ru.mirea.practice + 2024.1 + ../pom.xml + + 23K0623-p08 + Массивы + diff --git a/students/23K0623/23K0623-p08/src/main/java/ru/mirea/practice/s23k0623/MaxCount.java b/students/23K0623/23K0623-p08/src/main/java/ru/mirea/practice/s23k0623/MaxCount.java new file mode 100644 index 000000000..11adf47ca --- /dev/null +++ b/students/23K0623/23K0623-p08/src/main/java/ru/mirea/practice/s23k0623/MaxCount.java @@ -0,0 +1,34 @@ +package ru.mirea.practice.s23k0623; + +import java.util.Scanner; + +public abstract class MaxCount { + public static void main(String[] args) { + countMaxElements(); + } + + public static void countMaxElements() { + try (Scanner scanner = new Scanner(System.in)) { + int max = Integer.MIN_VALUE; + int maxCount = 0; + System.out.println("Вводите последовательность по 1-му числу:"); + while (true) { + int number = scanner.nextInt(); + if (number == 0) { + break; + } + + if (number > max) { + max = number; + maxCount = 1; + } else if (number == max) { + maxCount++; + } + } + + System.out.println("Количество элементов, равных максимуму (" + max + "): " + maxCount); + } catch (RuntimeException e) { + throw new RuntimeException(e); + } + } +} diff --git a/students/23K0623/23K0623-p08/src/main/java/ru/mirea/practice/s23k0623/MaxNumber.java b/students/23K0623/23K0623-p08/src/main/java/ru/mirea/practice/s23k0623/MaxNumber.java new file mode 100644 index 000000000..32a59b9e6 --- /dev/null +++ b/students/23K0623/23K0623-p08/src/main/java/ru/mirea/practice/s23k0623/MaxNumber.java @@ -0,0 +1,30 @@ +package ru.mirea.practice.s23k0623; + +import java.util.Scanner; + +public abstract class MaxNumber { + public static void main(String[] args) { + maxElement(); + } + + public static void maxElement() { + try (Scanner scanner = new Scanner(System.in)) { + int max = Integer.MIN_VALUE; + System.out.println("Вводите последовательность по 1-му числу:"); + while (true) { + int number = scanner.nextInt(); + if (number == 0) { + break; + } + + if (number > max) { + max = number; + } + } + + System.out.println("Макимальное число: " + max); + } catch (RuntimeException e) { + throw new RuntimeException(e); + } + } +} diff --git a/students/23K0623/23K0623-p08/src/main/java/ru/mirea/practice/s23k0623/NumbersFromOneToN.java b/students/23K0623/23K0623-p08/src/main/java/ru/mirea/practice/s23k0623/NumbersFromOneToN.java new file mode 100644 index 000000000..7df11f7ee --- /dev/null +++ b/students/23K0623/23K0623-p08/src/main/java/ru/mirea/practice/s23k0623/NumbersFromOneToN.java @@ -0,0 +1,17 @@ +package ru.mirea.practice.s23k0623; + +import java.util.Scanner; + +public abstract class NumbersFromOneToN { + public static void main(String[] args) { + try (Scanner scanner = new Scanner(System.in);) { + System.out.print("Введите натуральное число n: "); + int n = scanner.nextInt(); + for (int i = 1; i <= n; i++) { + System.out.print(i + " "); + } + } catch (RuntimeException e) { + throw new RuntimeException(e); + } + } +} diff --git a/students/23K0623/23K0623-p09/pom.xml b/students/23K0623/23K0623-p09/pom.xml new file mode 100644 index 000000000..018030aa9 --- /dev/null +++ b/students/23K0623/23K0623-p09/pom.xml @@ -0,0 +1,13 @@ + + + 4.0.0 + + 23K0623 + ru.mirea.practice + 2024.1 + ../pom.xml + + 23K0623-p09 + Массивы + diff --git a/students/23K0623/23K0623-p09/src/main/java/ru/mirea/practice/s23k0623/InsertionSort.java b/students/23K0623/23K0623-p09/src/main/java/ru/mirea/practice/s23k0623/InsertionSort.java new file mode 100644 index 000000000..7d0a105b0 --- /dev/null +++ b/students/23K0623/23K0623-p09/src/main/java/ru/mirea/practice/s23k0623/InsertionSort.java @@ -0,0 +1,19 @@ +package ru.mirea.practice.s23k0623; + +final class InsertionSort { + private InsertionSort() { + // :-) + } + + public static void sort(Student[] students) { + for (int i = 1; i < students.length; i++) { + Student key = students[i]; + int j = i - 1; + while (j >= 0 && students[j].getiDNumber() > key.getiDNumber()) { + students[j + 1] = students[j]; + j = j - 1; + } + students[j + 1] = key; + } + } +} diff --git a/students/23K0623/23K0623-p09/src/main/java/ru/mirea/practice/s23k0623/Main.java b/students/23K0623/23K0623-p09/src/main/java/ru/mirea/practice/s23k0623/Main.java new file mode 100644 index 000000000..3b2a7b96b --- /dev/null +++ b/students/23K0623/23K0623-p09/src/main/java/ru/mirea/practice/s23k0623/Main.java @@ -0,0 +1,4 @@ +package ru.mirea.practice.s23k0623; + +public final class Main { +} diff --git a/students/23K0623/23K0623-p09/src/main/java/ru/mirea/practice/s23k0623/Student.java b/students/23K0623/23K0623-p09/src/main/java/ru/mirea/practice/s23k0623/Student.java new file mode 100644 index 000000000..4cd19dba5 --- /dev/null +++ b/students/23K0623/23K0623-p09/src/main/java/ru/mirea/practice/s23k0623/Student.java @@ -0,0 +1,31 @@ +package ru.mirea.practice.s23k0623; + +class Student { + int id; + String name; + double gpa; + + public Student(int id, String name, double gpa) { + this.id = id; + this.name = name; + this.gpa = gpa; + } + + public int getiDNumber() { + return id; + } + + @Override + public String toString() { + return "Student{" + + "iDNumber=" + id + + ", name='" + name + '\'' + + ", gpa=" + gpa + + '}'; + } +} + + + + + diff --git a/students/23K0623/23K0623-p09/src/main/java/ru/mirea/practice/s23k0623/task1/Sorter.java b/students/23K0623/23K0623-p09/src/main/java/ru/mirea/practice/s23k0623/task1/Sorter.java new file mode 100644 index 000000000..adc72c982 --- /dev/null +++ b/students/23K0623/23K0623-p09/src/main/java/ru/mirea/practice/s23k0623/task1/Sorter.java @@ -0,0 +1,36 @@ +package ru.mirea.practice.s23k0623.task1; + +import java.util.Arrays; +import java.util.Random; + +public abstract class Sorter { + public static Comparable[] insertSort(Comparable[] array) { + for (int i = 1; i < array.length; i++) { + Comparable key = array[i]; + int j = i; + while (j > 0 && key.compareTo(array[j - 1]) != 1) { + array[j] = array[j - 1]; + j--; + } + array[j] = key; + } + return array; + } + + public static void main(String[] args) { + Random random = new Random(); + String[] name = {"Коля", "Вася", "Петя", "Даша", "Саша", "Оля", "Наташа"}; + + Student[] students = new Student[5]; + + for (int i = 0; i < students.length; i++) { + students[i] = new Student(name[random.nextInt(name.length - 1)], + String.format("23K%04d", students.length - i - 1), 17 + random.nextInt(3)); + } + + System.out.println(Arrays.toString(students)); + System.out.println(); + + System.out.println(Arrays.toString(insertSort(students))); + } +} diff --git a/students/23K0623/23K0623-p09/src/main/java/ru/mirea/practice/s23k0623/task1/Student.java b/students/23K0623/23K0623-p09/src/main/java/ru/mirea/practice/s23k0623/task1/Student.java new file mode 100644 index 000000000..722c9bcca --- /dev/null +++ b/students/23K0623/23K0623-p09/src/main/java/ru/mirea/practice/s23k0623/task1/Student.java @@ -0,0 +1,35 @@ +package ru.mirea.practice.s23k0623.task1; + +public class Student implements Comparable { + String name; + String idNumber; + int age; + + public Student(String name, String idNumber, int age) { + this.name = name; + this.idNumber = idNumber; + this.age = age; + } + + public int getAge() { + return age; + } + + public String getIdNumber() { + return idNumber; + } + + public String getName() { + return name; + } + + @Override + public String toString() { + return "Student{" + "idNumber='" + idNumber + '\'' + '}'; + } + + @Override + public int compareTo(Student student) { + return this.idNumber.compareTo(student.idNumber); + } +} diff --git a/students/23K0623/23K0623-p09/src/main/java/ru/mirea/practice/s23k0623/task2/CompSciComparator.java b/students/23K0623/23K0623-p09/src/main/java/ru/mirea/practice/s23k0623/task2/CompSciComparator.java new file mode 100644 index 000000000..59fec0f0e --- /dev/null +++ b/students/23K0623/23K0623-p09/src/main/java/ru/mirea/practice/s23k0623/task2/CompSciComparator.java @@ -0,0 +1,17 @@ +package ru.mirea.practice.s23k0623.task2; + +import java.util.Comparator; + +public class CompSciComparator implements Comparator { + + @Override + public int compare(Student o1, Student o2) { + if (o1.getCompSciGrade() > o2.getCompSciGrade()) { + return 1; + } else if (o1.getCompSciGrade() < o2.getCompSciGrade()) { + return -1; + } else { + return 0; + } + } +} diff --git a/students/23K0623/23K0623-p09/src/main/java/ru/mirea/practice/s23k0623/task2/MathComparator.java b/students/23K0623/23K0623-p09/src/main/java/ru/mirea/practice/s23k0623/task2/MathComparator.java new file mode 100644 index 000000000..fab578fd6 --- /dev/null +++ b/students/23K0623/23K0623-p09/src/main/java/ru/mirea/practice/s23k0623/task2/MathComparator.java @@ -0,0 +1,17 @@ +package ru.mirea.practice.s23k0623.task2; + +import java.util.Comparator; + +public class MathComparator implements Comparator { + + @Override + public int compare(Student o1, Student o2) { + if (o1.getMathGrade() > o2.getMathGrade()) { + return 1; + } else if (o1.getMathGrade() < o2.getMathGrade()) { + return -1; + } else { + return 0; + } + } +} diff --git a/students/23K0623/23K0623-p09/src/main/java/ru/mirea/practice/s23k0623/task2/PhylosophyComparator.java b/students/23K0623/23K0623-p09/src/main/java/ru/mirea/practice/s23k0623/task2/PhylosophyComparator.java new file mode 100644 index 000000000..acc51998c --- /dev/null +++ b/students/23K0623/23K0623-p09/src/main/java/ru/mirea/practice/s23k0623/task2/PhylosophyComparator.java @@ -0,0 +1,17 @@ +package ru.mirea.practice.s23k0623.task2; + +import java.util.Comparator; + +public class PhylosophyComparator implements Comparator { + + @Override + public int compare(Student o1, Student o2) { + if (o1.getCompSciGrade() > o2.getCompSciGrade()) { + return 1; + } else if (o1.getCompSciGrade() < o2.getCompSciGrade()) { + return -1; + } else { + return 0; + } + } +} diff --git a/students/23K0623/23K0623-p09/src/main/java/ru/mirea/practice/s23k0623/task2/PhysComparator.java b/students/23K0623/23K0623-p09/src/main/java/ru/mirea/practice/s23k0623/task2/PhysComparator.java new file mode 100644 index 000000000..c8afb8eae --- /dev/null +++ b/students/23K0623/23K0623-p09/src/main/java/ru/mirea/practice/s23k0623/task2/PhysComparator.java @@ -0,0 +1,17 @@ +package ru.mirea.practice.s23k0623.task2; + +import java.util.Comparator; + +public class PhysComparator implements Comparator { + + @Override + public int compare(Student o1, Student o2) { + if (o1.getPhysicsGrade() > o2.getPhysicsGrade()) { + return 1; + } else if (o1.getPhysicsGrade() < o2.getPhysicsGrade()) { + return -1; + } else { + return 0; + } + } +} diff --git a/students/23K0623/23K0623-p09/src/main/java/ru/mirea/practice/s23k0623/task2/SortingStudentsBygpa.java b/students/23K0623/23K0623-p09/src/main/java/ru/mirea/practice/s23k0623/task2/SortingStudentsBygpa.java new file mode 100644 index 000000000..2b7f739a9 --- /dev/null +++ b/students/23K0623/23K0623-p09/src/main/java/ru/mirea/practice/s23k0623/task2/SortingStudentsBygpa.java @@ -0,0 +1,54 @@ +package ru.mirea.practice.s23k0623.task2; + +import java.util.ArrayList; +import java.util.Comparator; +import java.util.List; +import java.util.Random; + +public abstract class SortingStudentsBygpa { + public static List quicksort(List array, Comparator comparator) { + if (array.size() <= 1) { + return array; + } + int pivot = array.size() / 2; + List arraysmall = new ArrayList<>(); + List arraybig = new ArrayList<>(); + for (T item : array) { + if (item.equals(array.get(pivot))) { + continue; + } else if (comparator.compare(array.get(pivot), item) > 0) { + arraysmall.add(item); + } else if (comparator.compare(array.get(pivot), item) < 0) { + arraybig.add(item); + } + } + List arraySorted = quicksort(arraysmall, comparator); + arraySorted.add(array.get(pivot)); + arraySorted.addAll(quicksort(arraybig, comparator)); + return arraySorted; + } + + public static void main(String[] args) { + final Comparator comparator = new MathComparator().thenComparing(new PhysComparator().thenComparing(new CompSciComparator() + .thenComparing(new PhylosophyComparator()))).reversed(); + + Random random = new Random(); + String[] name = {"Коля", "Вася", "Петя", "Даша", "Саша", "Оля", "Наташа"}; + + ArrayList students = new ArrayList<>(); + + int size = 15; + + for (int i = 0; i < size; i++) { + students.add(new Student(name[random.nextInt(name.length - 1)], String.format("23K%04d", size - i - 1), 17 + random.nextInt(3))); + } + + for (Student student : students) { + student.setGrades(random.nextFloat() * 3 + 2, random.nextFloat() * 3 + 2, random.nextFloat() * 3 + 2, random.nextFloat() * 3 + 2); + } + + System.out.println(students.toString().replace("}, ", "}\n ")); + System.out.println(); + System.out.println(quicksort(students, comparator).toString().replace("}, ", "}\n ")); + } +} diff --git a/students/23K0623/23K0623-p09/src/main/java/ru/mirea/practice/s23k0623/task2/Student.java b/students/23K0623/23K0623-p09/src/main/java/ru/mirea/practice/s23k0623/task2/Student.java new file mode 100644 index 000000000..d5f22d56e --- /dev/null +++ b/students/23K0623/23K0623-p09/src/main/java/ru/mirea/practice/s23k0623/task2/Student.java @@ -0,0 +1,84 @@ +package ru.mirea.practice.s23k0623.task2; + +public class Student { + private final String name; + private final String idNumber; + private final int age; + private float mathGrade; + private float physicsGrade; + private float compSciGrade; + private float philosophyGrade; + + public Student(String name, String idNumber, int age) { + this.name = name; + this.idNumber = idNumber; + this.age = age; + } + + public Student(String name, String idNumber, int age, float mathGrade, float physicsGrade, float compSciGrade, float philosophyGrade) { + this.name = name; + this.idNumber = idNumber; + this.age = age; + this.mathGrade = mathGrade; + this.physicsGrade = physicsGrade; + this.compSciGrade = compSciGrade; + this.philosophyGrade = philosophyGrade; + } + + public float getPhilosophyGrade() { + return philosophyGrade; + } + + public void setPhilosophyGrade(float philosophyGrade) { + this.philosophyGrade = philosophyGrade; + } + + public float getCompSciGrade() { + return compSciGrade; + } + + public void setCompSciGrade(float compSciGrade) { + this.compSciGrade = compSciGrade; + } + + public float getPhysicsGrade() { + return physicsGrade; + } + + public void setPhysicsGrade(float physicsGrade) { + this.physicsGrade = physicsGrade; + } + + public float getMathGrade() { + return mathGrade; + } + + public void setMathGrade(float mathGrade) { + this.mathGrade = mathGrade; + } + + public void setGrades(float mathGrade, float physicsGrade, float compSciGrade, float philosophyGrade) { + this.mathGrade = mathGrade; + this.physicsGrade = physicsGrade; + this.compSciGrade = compSciGrade; + this.philosophyGrade = philosophyGrade; + } + + public int getAge() { + return age; + } + + public String getIdNumber() { + return idNumber; + } + + @Override + public String toString() { + return String.format("{Student: ID: %s Math: %.2f Physics: %.2f Computer Science: %.2f Philosophy: %.2f}", + idNumber, getMathGrade(), getPhysicsGrade(), getCompSciGrade(), getPhilosophyGrade()); + } + + public String getName() { + return name; + } +} \ No newline at end of file diff --git a/students/23K0623/pom.xml b/students/23K0623/pom.xml index 5534467a6..860caa72c 100644 --- a/students/23K0623/pom.xml +++ b/students/23K0623/pom.xml @@ -14,6 +14,16 @@ 23K0623-p01 + 23K0623-p02 + 23K0623-p03 + 23K0623-p04 + 23K0623-p041 + 23K0623-p05 + 23K0623-p06 + 23K0623-p07 + 23K0623-p08 + 23K0623-p09 + 23K0623-p010 From 3d4cdb52c78494762a8f344b79f26f6b92024be4 Mon Sep 17 00:00:00 2001 From: khromilton Date: Fri, 4 Oct 2024 14:46:08 +0300 Subject: [PATCH 2/5] Update README.adoc --- students/23K0623/README.adoc | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/students/23K0623/README.adoc b/students/23K0623/README.adoc index 0078847b4..371c6e389 100644 --- a/students/23K0623/README.adoc +++ b/students/23K0623/README.adoc @@ -1,2 +1,2 @@ -Абсулов Даниил -КВБО-01-23 \ No newline at end of file +Хромов Александр +КВБО-01-23 From af83061cfc392be5432006d1297fd1d9a4e183db Mon Sep 17 00:00:00 2001 From: KhromovAM Date: Fri, 8 Nov 2024 22:12:52 +0300 Subject: [PATCH 3/5] 11-20 --- students/23K0623/23K0623-p011/pom.xml | 13 +++ .../practice/s23k0623/DateComparison.java | 45 ++++++++++ .../ru/mirea/practice/s23k0623/Developer.java | 21 +++++ students/23K0623/23K0623-p012/pom.xml | 13 +++ .../ru/mirea/practice/s23k0623/Circle.java | 13 +++ .../ru/mirea/practice/s23k0623/Shape.java | 35 ++++++++ .../ru/mirea/practice/s23k0623/Square.java | 13 +++ .../ru/mirea/practice/s23k0623/Twotask.java | 14 ++++ students/23K0623/23K0623-p013/pom.xml | 13 +++ .../ru/mirea/practice/s23k0623/Address.java | 26 ++++++ .../ru/mirea/practice/s23k0623/First.java | 83 +++++++++++++++++++ .../ru/mirea/practice/s23k0623/Person.java | 52 ++++++++++++ .../ru/mirea/practice/s23k0623/Three.java | 66 +++++++++++++++ .../java/ru/mirea/practice/s23k0623/Two.java | 19 +++++ students/23K0623/23K0623-p014/pom.xml | 13 +++ .../ru/mirea/practice/s23k0623/Three.java | 24 ++++++ .../java/ru/mirea/practice/s23k0623/Two.java | 30 +++++++ students/23K0623/23K0623-p015/pom.xml | 13 +++ .../mirea/practice/s23k0623/Calculator.java | 75 +++++++++++++++++ students/23K0623/23K0623-p016/pom.xml | 13 +++ .../mirea/practice/s23k0623/GuessingGame.java | 47 +++++++++++ students/23K0623/23K0623-p017/pom.xml | 13 +++ .../s23k0623/CyclicDoublyLinkedList.java | 69 +++++++++++++++ .../ru/mirea/practice/s23k0623/Tester.java | 26 ++++++ students/23K0623/23K0623-p018/pom.xml | 13 +++ .../mirea/practice/s23k0623/Exception3.java | 32 +++++++ .../java/ru/mirea/practice/s23k0623/Four.java | 12 +++ .../mirea/practice/s23k0623/ThrowsDemo.java | 20 +++++ students/23K0623/23K0623-p019/pom.xml | 13 +++ .../ru/mirea/practice/s23k0623/Customer.java | 26 ++++++ .../s23k0623/InvalidinnException.java | 7 ++ .../practice/s23k0623/OnlinePurchase.java | 24 ++++++ students/23K0623/23K0623-p020/pom.xml | 13 +++ .../java/ru/mirea/practice/s23k0623/Main.java | 17 ++++ .../java/ru/mirea/practice/s23k0623/Trio.java | 47 +++++++++++ students/23K0623/pom.xml | 11 ++- 36 files changed, 983 insertions(+), 1 deletion(-) create mode 100644 students/23K0623/23K0623-p011/pom.xml create mode 100644 students/23K0623/23K0623-p011/src/main/java/ru/mirea/practice/s23k0623/DateComparison.java create mode 100644 students/23K0623/23K0623-p011/src/main/java/ru/mirea/practice/s23k0623/Developer.java create mode 100644 students/23K0623/23K0623-p012/pom.xml create mode 100644 students/23K0623/23K0623-p012/src/main/java/ru/mirea/practice/s23k0623/Circle.java create mode 100644 students/23K0623/23K0623-p012/src/main/java/ru/mirea/practice/s23k0623/Shape.java create mode 100644 students/23K0623/23K0623-p012/src/main/java/ru/mirea/practice/s23k0623/Square.java create mode 100644 students/23K0623/23K0623-p012/src/main/java/ru/mirea/practice/s23k0623/Twotask.java create mode 100644 students/23K0623/23K0623-p013/pom.xml create mode 100644 students/23K0623/23K0623-p013/src/main/java/ru/mirea/practice/s23k0623/Address.java create mode 100644 students/23K0623/23K0623-p013/src/main/java/ru/mirea/practice/s23k0623/First.java create mode 100644 students/23K0623/23K0623-p013/src/main/java/ru/mirea/practice/s23k0623/Person.java create mode 100644 students/23K0623/23K0623-p013/src/main/java/ru/mirea/practice/s23k0623/Three.java create mode 100644 students/23K0623/23K0623-p013/src/main/java/ru/mirea/practice/s23k0623/Two.java create mode 100644 students/23K0623/23K0623-p014/pom.xml create mode 100644 students/23K0623/23K0623-p014/src/main/java/ru/mirea/practice/s23k0623/Three.java create mode 100644 students/23K0623/23K0623-p014/src/main/java/ru/mirea/practice/s23k0623/Two.java create mode 100644 students/23K0623/23K0623-p015/pom.xml create mode 100644 students/23K0623/23K0623-p015/src/main/java/ru/mirea/practice/s23k0623/Calculator.java create mode 100644 students/23K0623/23K0623-p016/pom.xml create mode 100644 students/23K0623/23K0623-p016/src/main/java/ru/mirea/practice/s23k0623/GuessingGame.java create mode 100644 students/23K0623/23K0623-p017/pom.xml create mode 100644 students/23K0623/23K0623-p017/src/main/java/ru/mirea/practice/s23k0623/CyclicDoublyLinkedList.java create mode 100644 students/23K0623/23K0623-p017/src/main/java/ru/mirea/practice/s23k0623/Tester.java create mode 100644 students/23K0623/23K0623-p018/pom.xml create mode 100644 students/23K0623/23K0623-p018/src/main/java/ru/mirea/practice/s23k0623/Exception3.java create mode 100644 students/23K0623/23K0623-p018/src/main/java/ru/mirea/practice/s23k0623/Four.java create mode 100644 students/23K0623/23K0623-p018/src/main/java/ru/mirea/practice/s23k0623/ThrowsDemo.java create mode 100644 students/23K0623/23K0623-p019/pom.xml create mode 100644 students/23K0623/23K0623-p019/src/main/java/ru/mirea/practice/s23k0623/Customer.java create mode 100644 students/23K0623/23K0623-p019/src/main/java/ru/mirea/practice/s23k0623/InvalidinnException.java create mode 100644 students/23K0623/23K0623-p019/src/main/java/ru/mirea/practice/s23k0623/OnlinePurchase.java create mode 100644 students/23K0623/23K0623-p020/pom.xml create mode 100644 students/23K0623/23K0623-p020/src/main/java/ru/mirea/practice/s23k0623/Main.java create mode 100644 students/23K0623/23K0623-p020/src/main/java/ru/mirea/practice/s23k0623/Trio.java 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/pom.xml b/students/23K0623/pom.xml index 860caa72c..241b0ecde 100644 --- a/students/23K0623/pom.xml +++ b/students/23K0623/pom.xml @@ -24,6 +24,15 @@ 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 From 0ffd10ba204dd4ab42db4cfbc010faf6fc115da3 Mon Sep 17 00:00:00 2001 From: KhromovAM Date: Fri, 13 Dec 2024 22:12:09 +0300 Subject: [PATCH 4/5] 20-32 --- students/23K0623/23K0623-p021/pom.xml | 13 ++ .../mirea/practice/s23k0623/prog1/Main.java | 26 +++ .../practice/s23k0623/prog2/AllType.java | 16 ++ .../mirea/practice/s23k0623/prog2/Main.java | 9 ++ .../practice/s23k0623/prog3/AllType.java | 24 +++ .../mirea/practice/s23k0623/prog3/Main.java | 11 ++ students/23K0623/23K0623-p022/pom.xml | 13 ++ .../java/ru/mirea/practice/s23k0623/Main.java | 51 ++++++ .../s23k0623/prog2/CalculatorController.java | 22 +++ .../s23k0623/prog2/CalculatorModel.java | 44 ++++++ .../s23k0623/prog2/CalculatorView.java | 46 ++++++ .../mirea/practice/s23k0623/prog2/Main.java | 9 ++ .../mirea/practice/s23k0623/prog2/Tests.java | 18 +++ students/23K0623/23K0623-p023/pom.xml | 13 ++ .../s23k0623/prog2/AbstractQueue.java | 29 ++++ .../practice/s23k0623/prog2/ArrayQueue.java | 56 +++++++ .../practice/s23k0623/prog2/LinkedQueue.java | 71 +++++++++ .../mirea/practice/s23k0623/prog2/Queue.java | 15 ++ .../mirea/practice/s23k0623/prog2/Test.java | 27 ++++ .../ru/mirea/practice/s23k0623/prog3/Add.java | 12 ++ .../s23k0623/prog3/BinaryOperation.java | 11 ++ .../mirea/practice/s23k0623/prog3/Const.java | 14 ++ .../mirea/practice/s23k0623/prog3/Divide.java | 12 ++ .../practice/s23k0623/prog3/Expression.java | 5 + .../mirea/practice/s23k0623/prog3/Main.java | 31 ++++ .../practice/s23k0623/prog3/Multiply.java | 12 ++ .../practice/s23k0623/prog3/Subtract.java | 12 ++ .../practice/s23k0623/prog3/Variable.java | 15 ++ .../ru/mirea/practice/s23k0623/prog4/Add.java | 18 +++ .../s23k0623/prog4/BinaryOperation.java | 11 ++ .../mirea/practice/s23k0623/prog4/Const.java | 14 ++ .../mirea/practice/s23k0623/prog4/Divide.java | 20 +++ .../s23k0623/prog4/EvaluationException.java | 7 + .../s23k0623/prog4/ExpressionParser.java | 73 +++++++++ .../mirea/practice/s23k0623/prog4/Main.java | 17 ++ .../practice/s23k0623/prog4/Multiply.java | 20 +++ .../mirea/practice/s23k0623/prog4/Negate.java | 18 +++ .../practice/s23k0623/prog4/Subtract.java | 18 +++ .../s23k0623/prog4/TripleExpression.java | 5 + .../practice/s23k0623/prog4/Variable.java | 28 ++++ students/23K0623/23K0623-p024/pom.xml | 13 ++ .../ru/mirea/practice/s23k0623/Complex.java | 25 +++ .../s23k0623/ComplexAbstractFactory.java | 9 ++ .../practice/s23k0623/ConcreteFactory.java | 14 ++ .../java/ru/mirea/practice/s23k0623/Test.java | 14 ++ students/23K0623/23K0623-p025/pom.xml | 13 ++ .../java/ru/mirea/practice/s23k0623/Main.java | 12 ++ .../mirea/practice/s23k0623/task4/Main.java | 17 ++ .../mirea/practice/s23k0623/task5/Main.java | 17 ++ students/23K0623/23K0623-p026/pom.xml | 13 ++ .../java/ru/mirea/practice/s23k0623/Main.java | 12 ++ .../mirea/practice/s23k0623/task1/Main.java | 27 ++++ .../s23k0623/task2/CustomIterator.java | 20 +++ .../practice/s23k0623/task2/CustomList.java | 39 +++++ .../mirea/practice/s23k0623/task2/Node.java | 32 ++++ students/23K0623/23K0623-p027/pom.xml | 13 ++ .../java/ru/mirea/practice/s23k0623/Main.java | 12 ++ .../practice/s23k0623/task1/Hashtable.java | 70 +++++++++ .../mirea/practice/s23k0623/task1/Test.java | 31 ++++ students/23K0623/23K0623-p028/pom.xml | 13 ++ .../java/ru/mirea/practice/s23k0623/Main.java | 12 ++ .../mirea/practice/s23k0623/task1/Main.java | 18 +++ .../mirea/practice/s23k0623/task2/Main.java | 57 +++++++ students/23K0623/23K0623-p029/pom.xml | 13 ++ .../java/ru/mirea/practice/s23k0623/Main.java | 12 ++ .../mirea/practice/s23k0623/task1/Main.java | 35 +++++ .../mirea/practice/s23k0623/task2/Main.java | 48 ++++++ .../mirea/practice/s23k0623/task2/graph.txt | 7 + .../practice/s23k0623/task2/graphShortest.txt | 6 + students/23K0623/23K0623-p030/pom.xml | 13 ++ .../mirea/practice/s23k0623/task1/Test.java | 16 ++ .../mirea/practice/s23k0623/task1/Tree.java | 64 ++++++++ .../mirea/practice/s23k0623/task2/Algae.java | 67 ++++++++ .../mirea/practice/s23k0623/task2/Node.java | 20 +++ .../mirea/practice/s23k0623/task2/Test.java | 15 ++ students/23K0623/23K0623-p031/pom.xml | 13 ++ .../java/ru/mirea/practice/s23k0623/Node.java | 13 ++ .../ru/mirea/practice/s23k0623/Processor.java | 21 +++ .../java/ru/mirea/practice/s23k0623/Test.java | 48 ++++++ .../java/ru/mirea/practice/s23k0623/Tree.java | 148 ++++++++++++++++++ students/23K0623/23K0623-p032/pom.xml | 13 ++ .../java/ru/mirea/practice/s23k0623/Jo.java | 87 ++++++++++ .../java/ru/mirea/practice/s23k0623/Test.java | 10 ++ students/23K0623/pom.xml | 12 ++ 84 files changed, 2070 insertions(+) create mode 100644 students/23K0623/23K0623-p021/pom.xml create mode 100644 students/23K0623/23K0623-p021/src/main/java/ru/mirea/practice/s23k0623/prog1/Main.java create mode 100644 students/23K0623/23K0623-p021/src/main/java/ru/mirea/practice/s23k0623/prog2/AllType.java create mode 100644 students/23K0623/23K0623-p021/src/main/java/ru/mirea/practice/s23k0623/prog2/Main.java create mode 100644 students/23K0623/23K0623-p021/src/main/java/ru/mirea/practice/s23k0623/prog3/AllType.java create mode 100644 students/23K0623/23K0623-p021/src/main/java/ru/mirea/practice/s23k0623/prog3/Main.java create mode 100644 students/23K0623/23K0623-p022/pom.xml create mode 100644 students/23K0623/23K0623-p022/src/main/java/ru/mirea/practice/s23k0623/Main.java create mode 100644 students/23K0623/23K0623-p022/src/main/java/ru/mirea/practice/s23k0623/prog2/CalculatorController.java create mode 100644 students/23K0623/23K0623-p022/src/main/java/ru/mirea/practice/s23k0623/prog2/CalculatorModel.java create mode 100644 students/23K0623/23K0623-p022/src/main/java/ru/mirea/practice/s23k0623/prog2/CalculatorView.java create mode 100644 students/23K0623/23K0623-p022/src/main/java/ru/mirea/practice/s23k0623/prog2/Main.java create mode 100644 students/23K0623/23K0623-p022/src/main/java/ru/mirea/practice/s23k0623/prog2/Tests.java create mode 100644 students/23K0623/23K0623-p023/pom.xml create mode 100644 students/23K0623/23K0623-p023/src/main/java/ru/mirea/practice/s23k0623/prog2/AbstractQueue.java create mode 100644 students/23K0623/23K0623-p023/src/main/java/ru/mirea/practice/s23k0623/prog2/ArrayQueue.java create mode 100644 students/23K0623/23K0623-p023/src/main/java/ru/mirea/practice/s23k0623/prog2/LinkedQueue.java create mode 100644 students/23K0623/23K0623-p023/src/main/java/ru/mirea/practice/s23k0623/prog2/Queue.java create mode 100644 students/23K0623/23K0623-p023/src/main/java/ru/mirea/practice/s23k0623/prog2/Test.java create mode 100644 students/23K0623/23K0623-p023/src/main/java/ru/mirea/practice/s23k0623/prog3/Add.java create mode 100644 students/23K0623/23K0623-p023/src/main/java/ru/mirea/practice/s23k0623/prog3/BinaryOperation.java create mode 100644 students/23K0623/23K0623-p023/src/main/java/ru/mirea/practice/s23k0623/prog3/Const.java create mode 100644 students/23K0623/23K0623-p023/src/main/java/ru/mirea/practice/s23k0623/prog3/Divide.java create mode 100644 students/23K0623/23K0623-p023/src/main/java/ru/mirea/practice/s23k0623/prog3/Expression.java create mode 100644 students/23K0623/23K0623-p023/src/main/java/ru/mirea/practice/s23k0623/prog3/Main.java create mode 100644 students/23K0623/23K0623-p023/src/main/java/ru/mirea/practice/s23k0623/prog3/Multiply.java create mode 100644 students/23K0623/23K0623-p023/src/main/java/ru/mirea/practice/s23k0623/prog3/Subtract.java create mode 100644 students/23K0623/23K0623-p023/src/main/java/ru/mirea/practice/s23k0623/prog3/Variable.java create mode 100644 students/23K0623/23K0623-p023/src/main/java/ru/mirea/practice/s23k0623/prog4/Add.java create mode 100644 students/23K0623/23K0623-p023/src/main/java/ru/mirea/practice/s23k0623/prog4/BinaryOperation.java create mode 100644 students/23K0623/23K0623-p023/src/main/java/ru/mirea/practice/s23k0623/prog4/Const.java create mode 100644 students/23K0623/23K0623-p023/src/main/java/ru/mirea/practice/s23k0623/prog4/Divide.java create mode 100644 students/23K0623/23K0623-p023/src/main/java/ru/mirea/practice/s23k0623/prog4/EvaluationException.java create mode 100644 students/23K0623/23K0623-p023/src/main/java/ru/mirea/practice/s23k0623/prog4/ExpressionParser.java create mode 100644 students/23K0623/23K0623-p023/src/main/java/ru/mirea/practice/s23k0623/prog4/Main.java create mode 100644 students/23K0623/23K0623-p023/src/main/java/ru/mirea/practice/s23k0623/prog4/Multiply.java create mode 100644 students/23K0623/23K0623-p023/src/main/java/ru/mirea/practice/s23k0623/prog4/Negate.java create mode 100644 students/23K0623/23K0623-p023/src/main/java/ru/mirea/practice/s23k0623/prog4/Subtract.java create mode 100644 students/23K0623/23K0623-p023/src/main/java/ru/mirea/practice/s23k0623/prog4/TripleExpression.java create mode 100644 students/23K0623/23K0623-p023/src/main/java/ru/mirea/practice/s23k0623/prog4/Variable.java create mode 100644 students/23K0623/23K0623-p024/pom.xml create mode 100644 students/23K0623/23K0623-p024/src/main/java/ru/mirea/practice/s23k0623/Complex.java create mode 100644 students/23K0623/23K0623-p024/src/main/java/ru/mirea/practice/s23k0623/ComplexAbstractFactory.java create mode 100644 students/23K0623/23K0623-p024/src/main/java/ru/mirea/practice/s23k0623/ConcreteFactory.java create mode 100644 students/23K0623/23K0623-p024/src/main/java/ru/mirea/practice/s23k0623/Test.java create mode 100644 students/23K0623/23K0623-p025/pom.xml create mode 100644 students/23K0623/23K0623-p025/src/main/java/ru/mirea/practice/s23k0623/Main.java create mode 100644 students/23K0623/23K0623-p025/src/main/java/ru/mirea/practice/s23k0623/task4/Main.java create mode 100644 students/23K0623/23K0623-p025/src/main/java/ru/mirea/practice/s23k0623/task5/Main.java create mode 100644 students/23K0623/23K0623-p026/pom.xml create mode 100644 students/23K0623/23K0623-p026/src/main/java/ru/mirea/practice/s23k0623/Main.java create mode 100644 students/23K0623/23K0623-p026/src/main/java/ru/mirea/practice/s23k0623/task1/Main.java create mode 100644 students/23K0623/23K0623-p026/src/main/java/ru/mirea/practice/s23k0623/task2/CustomIterator.java create mode 100644 students/23K0623/23K0623-p026/src/main/java/ru/mirea/practice/s23k0623/task2/CustomList.java create mode 100644 students/23K0623/23K0623-p026/src/main/java/ru/mirea/practice/s23k0623/task2/Node.java create mode 100644 students/23K0623/23K0623-p027/pom.xml create mode 100644 students/23K0623/23K0623-p027/src/main/java/ru/mirea/practice/s23k0623/Main.java create mode 100644 students/23K0623/23K0623-p027/src/main/java/ru/mirea/practice/s23k0623/task1/Hashtable.java create mode 100644 students/23K0623/23K0623-p027/src/main/java/ru/mirea/practice/s23k0623/task1/Test.java create mode 100644 students/23K0623/23K0623-p028/pom.xml create mode 100644 students/23K0623/23K0623-p028/src/main/java/ru/mirea/practice/s23k0623/Main.java create mode 100644 students/23K0623/23K0623-p028/src/main/java/ru/mirea/practice/s23k0623/task1/Main.java create mode 100644 students/23K0623/23K0623-p028/src/main/java/ru/mirea/practice/s23k0623/task2/Main.java create mode 100644 students/23K0623/23K0623-p029/pom.xml create mode 100644 students/23K0623/23K0623-p029/src/main/java/ru/mirea/practice/s23k0623/Main.java create mode 100644 students/23K0623/23K0623-p029/src/main/java/ru/mirea/practice/s23k0623/task1/Main.java create mode 100644 students/23K0623/23K0623-p029/src/main/java/ru/mirea/practice/s23k0623/task2/Main.java create mode 100644 students/23K0623/23K0623-p029/src/main/java/ru/mirea/practice/s23k0623/task2/graph.txt create mode 100644 students/23K0623/23K0623-p029/src/main/java/ru/mirea/practice/s23k0623/task2/graphShortest.txt create mode 100644 students/23K0623/23K0623-p030/pom.xml create mode 100644 students/23K0623/23K0623-p030/src/main/java/ru/mirea/practice/s23k0623/task1/Test.java create mode 100644 students/23K0623/23K0623-p030/src/main/java/ru/mirea/practice/s23k0623/task1/Tree.java create mode 100644 students/23K0623/23K0623-p030/src/main/java/ru/mirea/practice/s23k0623/task2/Algae.java create mode 100644 students/23K0623/23K0623-p030/src/main/java/ru/mirea/practice/s23k0623/task2/Node.java create mode 100644 students/23K0623/23K0623-p030/src/main/java/ru/mirea/practice/s23k0623/task2/Test.java create mode 100644 students/23K0623/23K0623-p031/pom.xml create mode 100644 students/23K0623/23K0623-p031/src/main/java/ru/mirea/practice/s23k0623/Node.java create mode 100644 students/23K0623/23K0623-p031/src/main/java/ru/mirea/practice/s23k0623/Processor.java create mode 100644 students/23K0623/23K0623-p031/src/main/java/ru/mirea/practice/s23k0623/Test.java create mode 100644 students/23K0623/23K0623-p031/src/main/java/ru/mirea/practice/s23k0623/Tree.java create mode 100644 students/23K0623/23K0623-p032/pom.xml create mode 100644 students/23K0623/23K0623-p032/src/main/java/ru/mirea/practice/s23k0623/Jo.java create mode 100644 students/23K0623/23K0623-p032/src/main/java/ru/mirea/practice/s23k0623/Test.java 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..dca0fa149 --- /dev/null +++ b/students/23K0623/23K0623-p022/src/main/java/ru/mirea/practice/s23k0623/prog2/CalculatorView.java @@ -0,0 +1,46 @@ +package ru.mirea.practice.s23k0623.prog2; + +import javax.swing.*; +import java.awt.*; + +// 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..58fd2d006 --- /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.*; + +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 241b0ecde..2bad0f5a0 100644 --- a/students/23K0623/pom.xml +++ b/students/23K0623/pom.xml @@ -34,5 +34,17 @@ 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 From d4a3b39a68c9d8014ebc7d0d578144286c49209c Mon Sep 17 00:00:00 2001 From: KhromovAM Date: Fri, 13 Dec 2024 22:23:24 +0300 Subject: [PATCH 5/5] 20-32 --- .../mirea/practice/s23k0623/prog2/CalculatorView.java | 10 ++++++++-- .../java/ru/mirea/practice/s23k0623/prog2/Main.java | 2 +- 2 files changed, 9 insertions(+), 3 deletions(-) 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 index dca0fa149..718f6d853 100644 --- 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 @@ -1,7 +1,13 @@ package ru.mirea.practice.s23k0623.prog2; -import javax.swing.*; -import java.awt.*; +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 { 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 index 58fd2d006..c965b1dae 100644 --- 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 @@ -1,6 +1,6 @@ package ru.mirea.practice.s23k0623.prog2; -import javax.swing.*; +import javax.swing.SwingUtilities; public abstract class Main { public static void main(String[] args) {