From 910f1a45086ce8e90fd898c648ca93f05e03d863 Mon Sep 17 00:00:00 2001 From: Alex Date: Sat, 14 Dec 2024 00:07:01 +0300 Subject: [PATCH] =?UTF-8?q?=D0=9B=D0=B0=D0=B1=D0=B0=D1=80=D0=B0=D1=82?= =?UTF-8?q?=D0=BE=D1=80=D0=BD=D0=B0=D1=8F=20=D1=80=D0=B0=D0=B1=D0=BE=D1=82?= =?UTF-8?q?=D0=B0=20=E2=84=9621-32?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .../practice/s0000001/{ => task1}/Pln.java | 2 +- .../practice/s0000001/task2/Calcularot.java | 96 +++++++++++++++++++ .../ru/mirea/practice/s0000001/task2/Pln.java | 64 +++++++++++++ .../s0000001/tasksfrom1to3/TaskFour.java | 15 +++ students/23K0365/23K0365-p31/pom.xml | 13 +++ .../java/ru/mirea/practice/s0000001/Main.java | 12 +++ .../practice/s0000001/task1/MyyTree.java | 75 +++++++++++++++ .../mirea/practice/s0000001/task1/Node.java | 19 ++++ .../mirea/practice/s0000001/task2/Node.java | 19 ++++ .../practice/s0000001/task2/NotMyTree.java | 68 +++++++++++++ .../mirea/practice/s0000001/task6/Node.java | 19 ++++ .../practice/s0000001/task6/SixthTree.java | 61 ++++++++++++ students/23K0365/pom.xml | 1 + 13 files changed, 463 insertions(+), 1 deletion(-) rename students/23K0365/23K0365-p22/src/main/java/ru/mirea/practice/s0000001/{ => task1}/Pln.java (98%) create mode 100644 students/23K0365/23K0365-p22/src/main/java/ru/mirea/practice/s0000001/task2/Calcularot.java create mode 100644 students/23K0365/23K0365-p22/src/main/java/ru/mirea/practice/s0000001/task2/Pln.java create mode 100644 students/23K0365/23K0365-p27/src/main/java/ru/mirea/practice/s0000001/tasksfrom1to3/TaskFour.java create mode 100644 students/23K0365/23K0365-p31/pom.xml create mode 100644 students/23K0365/23K0365-p31/src/main/java/ru/mirea/practice/s0000001/Main.java create mode 100644 students/23K0365/23K0365-p31/src/main/java/ru/mirea/practice/s0000001/task1/MyyTree.java create mode 100644 students/23K0365/23K0365-p31/src/main/java/ru/mirea/practice/s0000001/task1/Node.java create mode 100644 students/23K0365/23K0365-p31/src/main/java/ru/mirea/practice/s0000001/task2/Node.java create mode 100644 students/23K0365/23K0365-p31/src/main/java/ru/mirea/practice/s0000001/task2/NotMyTree.java create mode 100644 students/23K0365/23K0365-p31/src/main/java/ru/mirea/practice/s0000001/task6/Node.java create mode 100644 students/23K0365/23K0365-p31/src/main/java/ru/mirea/practice/s0000001/task6/SixthTree.java diff --git a/students/23K0365/23K0365-p22/src/main/java/ru/mirea/practice/s0000001/Pln.java b/students/23K0365/23K0365-p22/src/main/java/ru/mirea/practice/s0000001/task1/Pln.java similarity index 98% rename from students/23K0365/23K0365-p22/src/main/java/ru/mirea/practice/s0000001/Pln.java rename to students/23K0365/23K0365-p22/src/main/java/ru/mirea/practice/s0000001/task1/Pln.java index 902ce7e89..97b4270b7 100644 --- a/students/23K0365/23K0365-p22/src/main/java/ru/mirea/practice/s0000001/Pln.java +++ b/students/23K0365/23K0365-p22/src/main/java/ru/mirea/practice/s0000001/task1/Pln.java @@ -1,4 +1,4 @@ -package ru.mirea.practice.s0000001; +package ru.mirea.practice.s0000001.task1; import java.util.ArrayDeque; import java.util.Deque; diff --git a/students/23K0365/23K0365-p22/src/main/java/ru/mirea/practice/s0000001/task2/Calcularot.java b/students/23K0365/23K0365-p22/src/main/java/ru/mirea/practice/s0000001/task2/Calcularot.java new file mode 100644 index 000000000..eb194568e --- /dev/null +++ b/students/23K0365/23K0365-p22/src/main/java/ru/mirea/practice/s0000001/task2/Calcularot.java @@ -0,0 +1,96 @@ +package ru.mirea.practice.s0000001.task2; + +import javax.swing.JFrame; +import javax.swing.JLabel; +import javax.swing.JOptionPane; +import javax.swing.JButton; +import javax.swing.JPanel; +import javax.swing.SwingConstants; +import java.awt.BorderLayout; +import java.awt.Font; +import java.awt.Dimension; +import java.awt.GridLayout; +import java.awt.event.ActionEvent; +import java.awt.event.ActionListener; //протестировано на "2", "3", "*", "4", "5", "*", "+" + +public class Calcularot extends JFrame { + private JLabel res = new JLabel("", SwingConstants.RIGHT); + private String text = ""; + + Calcularot() { + super("Calculator"); + setLayout(new BorderLayout()); + setSize(400, 500); + res.setFont(new Font("Arial", Font.BOLD, 24)); + res.setPreferredSize(new Dimension(400, 50)); + add(res, BorderLayout.NORTH); + JPanel buttonPanel = new JPanel(); + buttonPanel.setLayout(new GridLayout(4, 4, 5, 5)); + + String[] buttons = { + "7", "8", "9", "/", + "4", "5", "6", "*", + "1", "2", "3", "-", + "0", " ", "=", "+" + }; + for (String btnText : buttons) { + JButton button = new JButton(btnText); + button.setFont(new Font("Arial", Font.PLAIN, 24)); + buttonPanel.add(button); + button.addActionListener(new ActionListener() { + @Override + public void actionPerformed(ActionEvent e) { + if ("=".equals(btnText)) { + String formattedText = formatTextForCalculation(text); + String[] tokens = formattedText.split(" "); + double result = Pln.calculateSmth(tokens); + if (!Double.isNaN(result)) { + res.setText(String.valueOf(result)); + } else { + JOptionPane.showMessageDialog(null, "Calculation error", "ERROR", JOptionPane.ERROR_MESSAGE); + } + text = ""; + } else if (" ".equals(btnText)) { + text += " "; + res.setText(text); + } else if ("+".equals(btnText) | "*".equals(btnText) + | "/".equals(btnText) | "-".equals(btnText)) { + text += " " + btnText + " "; + res.setText(text); + } else { + text += btnText; + res.setText(text); + } + } + }); + } + + add(buttonPanel, BorderLayout.CENTER); + setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE); + setVisible(true); + } + + private String formatTextForCalculation(String input) { + input = input.trim(); + StringBuilder formattedText = new StringBuilder(); + for (int i = 0; i < input.length(); i++) { + char ch = input.charAt(i); + if (Character.isDigit(ch)) { + formattedText.append(ch); + } else if (isOperator(ch)) { + formattedText.append(" ").append(ch).append(" "); + } else if (ch == ' ') { + formattedText.append(" "); + } + } + return formattedText.toString(); + } + + private boolean isOperator(char ch) { + return ch == '+' || ch == '-' || ch == '*' || ch == '/' || ch == '^'; + } + + public static void main(String[] args) { + new Calcularot(); + } +} diff --git a/students/23K0365/23K0365-p22/src/main/java/ru/mirea/practice/s0000001/task2/Pln.java b/students/23K0365/23K0365-p22/src/main/java/ru/mirea/practice/s0000001/task2/Pln.java new file mode 100644 index 000000000..f86b03010 --- /dev/null +++ b/students/23K0365/23K0365-p22/src/main/java/ru/mirea/practice/s0000001/task2/Pln.java @@ -0,0 +1,64 @@ +package ru.mirea.practice.s0000001.task2; + +import java.util.ArrayDeque; +import java.util.Deque; + +public abstract class Pln { + private static boolean isOperate(String token) { + return "+".equals(token) || "-".equals(token) || "*".equals(token) || "/".equals(token) || "^".equals(token); + } + + private static double operationChoose(double a, double b, String op) { + switch (op) { + case "+": return a + b; + case "-": return a - b; + case "*": return a * b; + case "/": + if (b == 0) { + throw new ArithmeticException("INFINITY"); + } + return a / b; + default: return Double.NaN; + } + } + + public static double calculateSmth(String... args) { + Deque st = new ArrayDeque<>(); + for (String one : args) { + try { + double temp = Double.parseDouble(one); + st.push(temp); + } catch (NumberFormatException e) { + if (isOperate(one)) { + if (st.size() < 2) { + System.err.println("too litle amount of opearnds: " + one); + return Double.NaN; + } + double x = st.pop(); + double y = st.pop(); + try { + st.push(operationChoose(y, x, one)); + } catch (ArithmeticException ae) { + System.err.println("error: "); + return Double.NaN; + } + } else { + if (!(" ".equals(one) | one.isEmpty())) { + System.err.println("not operatable"); + return Double.NaN; + } + } + } catch (Exception e) { + System.err.println("incorrect symbols"); + return Double.NaN; + } + } + + if (st.size() != 1) { + System.err.println("error"); + return Double.NaN; + } + return st.pop(); + } +} + diff --git a/students/23K0365/23K0365-p27/src/main/java/ru/mirea/practice/s0000001/tasksfrom1to3/TaskFour.java b/students/23K0365/23K0365-p27/src/main/java/ru/mirea/practice/s0000001/tasksfrom1to3/TaskFour.java new file mode 100644 index 000000000..31d94e307 --- /dev/null +++ b/students/23K0365/23K0365-p27/src/main/java/ru/mirea/practice/s0000001/tasksfrom1to3/TaskFour.java @@ -0,0 +1,15 @@ +package ru.mirea.practice.s0000001.tasksfrom1to3; + +import java.util.PriorityQueue; + +public abstract class TaskFour { //не совсем понятно задание + public static void main(String[] args) { + PriorityQueue pQ = new PriorityQueue<>(); + for (int i = 1; i < 11; i++) { + pQ.add(i); + } + while (!pQ.isEmpty()) { + System.out.println(pQ.poll()); + } + } +} diff --git a/students/23K0365/23K0365-p31/pom.xml b/students/23K0365/23K0365-p31/pom.xml new file mode 100644 index 000000000..81a88e787 --- /dev/null +++ b/students/23K0365/23K0365-p31/pom.xml @@ -0,0 +1,13 @@ + + + 4.0.0 + + 23K0365 + ru.mirea.practice + 2024.1 + ../pom.xml + + 23K0365-p31 + Массивы + diff --git a/students/23K0365/23K0365-p31/src/main/java/ru/mirea/practice/s0000001/Main.java b/students/23K0365/23K0365-p31/src/main/java/ru/mirea/practice/s0000001/Main.java new file mode 100644 index 000000000..b89e47de8 --- /dev/null +++ b/students/23K0365/23K0365-p31/src/main/java/ru/mirea/practice/s0000001/Main.java @@ -0,0 +1,12 @@ +package ru.mirea.practice.s0000001; + +public final class Main { + + private Main() { + + } + + public static void main(String[] args) { + System.out.println("первая практическая работа!"); + } +} diff --git a/students/23K0365/23K0365-p31/src/main/java/ru/mirea/practice/s0000001/task1/MyyTree.java b/students/23K0365/23K0365-p31/src/main/java/ru/mirea/practice/s0000001/task1/MyyTree.java new file mode 100644 index 000000000..b9ae97bfc --- /dev/null +++ b/students/23K0365/23K0365-p31/src/main/java/ru/mirea/practice/s0000001/task1/MyyTree.java @@ -0,0 +1,75 @@ +package ru.mirea.practice.s0000001.task1; + +import java.util.ArrayDeque; +import java.util.ArrayList; +import java.util.Deque; +import java.util.List; + +public abstract class MyyTree { + public static void printer(Node head) { + if (head == null) { + return; + } + int leng = getHeight(head); + List levels = new ArrayList<>(); + Deque q = new ArrayDeque<>(); + q.offer(head); + for (int level = 0; level < leng; level++) { + int size = q.size(); + int b4 = (int) Math.pow(2, leng - level - 1) - 1; + int betwen = (int) Math.pow(2, leng - level) - 1; + StringBuilder answ = new StringBuilder(" ".repeat(b4)); + for (int i = 0; i < size; i++) { + Node node = q.poll(); + answ.append(node.data); + if (i < size - 1) { + answ.append(" ".repeat(betwen)); + } + for (int j = 0; j < node.childCnt; j++) { + q.offer(node.childs[j]); + } + } + levels.add(answ.toString()); + } + for (int i = levels.size() - 1; i >= 0; i--) { + System.out.println(levels.get(i)); + } + } + + private static int getHeight(Node head) { + if (head == null) { + return 0; + } + int leng = 0; + Deque q = new ArrayDeque<>(); + q.offer(head); + while (!q.isEmpty()) { + int size = q.size(); + leng++; + for (int i = 0; i < size; i++) { + Node node = q.poll(); + for (int j = 0; j < node.childCnt; j++) { + q.offer(node.childs[j]); + } + } + } + return leng; + } + + public static void main(String[] args) { + Node main = new Node(5); + Node a = new Node(2); + Node b = new Node(6); + Node c = new Node(1); + final Node d = new Node(2); + final Node e = new Node(5); + final Node f = new Node(6); + main.addChild(a); + main.addChild(b); + a.addChild(c); + a.addChild(d); + b.addChild(e); + b.addChild(f); + printer(main); + } +} diff --git a/students/23K0365/23K0365-p31/src/main/java/ru/mirea/practice/s0000001/task1/Node.java b/students/23K0365/23K0365-p31/src/main/java/ru/mirea/practice/s0000001/task1/Node.java new file mode 100644 index 000000000..9464ed867 --- /dev/null +++ b/students/23K0365/23K0365-p31/src/main/java/ru/mirea/practice/s0000001/task1/Node.java @@ -0,0 +1,19 @@ +package ru.mirea.practice.s0000001.task1; + +public class Node { + int data; + Node[] childs; + int childCnt; + + Node(int data) { + this.data = data; + this.childs = new Node[3]; + this.childCnt = 0; + } + + void addChild(Node child) { + if (childCnt < 3) { + childs[childCnt++] = child; + } + } +} diff --git a/students/23K0365/23K0365-p31/src/main/java/ru/mirea/practice/s0000001/task2/Node.java b/students/23K0365/23K0365-p31/src/main/java/ru/mirea/practice/s0000001/task2/Node.java new file mode 100644 index 000000000..00748fb0f --- /dev/null +++ b/students/23K0365/23K0365-p31/src/main/java/ru/mirea/practice/s0000001/task2/Node.java @@ -0,0 +1,19 @@ +package ru.mirea.practice.s0000001.task2; + +public class Node { + int data; + Node[] childs; + int childCnt; + + Node(int data) { + this.data = data; + this.childs = new Node[3]; + this.childCnt = 0; + } + + void addChild(Node child) { + if (childCnt < 3) { + childs[childCnt++] = child; + } + } +} diff --git a/students/23K0365/23K0365-p31/src/main/java/ru/mirea/practice/s0000001/task2/NotMyTree.java b/students/23K0365/23K0365-p31/src/main/java/ru/mirea/practice/s0000001/task2/NotMyTree.java new file mode 100644 index 000000000..08e87af1c --- /dev/null +++ b/students/23K0365/23K0365-p31/src/main/java/ru/mirea/practice/s0000001/task2/NotMyTree.java @@ -0,0 +1,68 @@ +package ru.mirea.practice.s0000001.task2; + +import java.util.ArrayDeque; +import java.util.Deque; + +public abstract class NotMyTree { + public static void printer(Node head) { + if (head == null) { + return; + } + int leng = getHeight(head); + Deque q = new ArrayDeque<>(); + q.offer(head); + String result = ""; + for (int level = 1; level <= leng; level++) { + int size = q.size(); + String currentLevelNodes = ""; + for (int i = 0; i < size; i++) { + Node node = q.poll(); + currentLevelNodes += node.data; + if (i < size - 1) { + currentLevelNodes += ", "; + } + for (int j = 0; j < node.childCnt; j++) { + if (node.childs[j] != null) { + q.offer(node.childs[j]); + } + } + } + result += currentLevelNodes + ", "; + } + + if (result.length() > 0) { + result = result.substring(0, result.length() - 2); + } + System.out.println(result); + } + + private static int getHeight(Node head) { + if (head == null) { + return 0; + } + int leng = 1; + for (int i = 0; i < head.childCnt; i++) { + if (head.childs[i] != null) { + leng = Math.max(leng, 1 + getHeight(head.childs[i])); + } + } + return leng; + } + + public static void main(String[] args) { + Node main = new Node(5); + Node a = new Node(2); + Node b = new Node(6); + Node c = new Node(1); + final Node d = new Node(2); + final Node e = new Node(5); + final Node f = new Node(6); + main.addChild(a); + main.addChild(b); + a.addChild(c); + a.addChild(d); + b.addChild(e); + b.addChild(f); + printer(main); + } +} diff --git a/students/23K0365/23K0365-p31/src/main/java/ru/mirea/practice/s0000001/task6/Node.java b/students/23K0365/23K0365-p31/src/main/java/ru/mirea/practice/s0000001/task6/Node.java new file mode 100644 index 000000000..1b4544909 --- /dev/null +++ b/students/23K0365/23K0365-p31/src/main/java/ru/mirea/practice/s0000001/task6/Node.java @@ -0,0 +1,19 @@ +package ru.mirea.practice.s0000001.task6; + +public class Node { + int data; + Node[] childs; + int childCnt; + + Node(int data) { + this.data = data; + this.childs = new Node[3]; + this.childCnt = 0; + } + + void addChild(Node child) { + if (childCnt < 3) { + childs[childCnt++] = child; + } + } +} diff --git a/students/23K0365/23K0365-p31/src/main/java/ru/mirea/practice/s0000001/task6/SixthTree.java b/students/23K0365/23K0365-p31/src/main/java/ru/mirea/practice/s0000001/task6/SixthTree.java new file mode 100644 index 000000000..3c29da452 --- /dev/null +++ b/students/23K0365/23K0365-p31/src/main/java/ru/mirea/practice/s0000001/task6/SixthTree.java @@ -0,0 +1,61 @@ +package ru.mirea.practice.s0000001.task6; + +import java.util.ArrayDeque; +import java.util.ArrayList; +import java.util.Deque; +import java.util.List; + +public abstract class SixthTree { + public static void printer(Node head) { + if (head == null) { + return; + } + int leng = getHeight(head); + Deque q = new ArrayDeque<>(); + q.offer(head); + for (int level = 1; level <= leng; level++) { + int size = q.size(); + List currentLevelNodes = new ArrayList<>(); + for (int i = 0; i < size; i++) { + Node node = q.poll(); + currentLevelNodes.add(String.valueOf(node.data)); + for (int j = 0; j < node.childCnt; j++) { + if (node.childs[j] != null) { + q.offer(node.childs[j]); + } + } + } + System.out.println("L№" + level + ": " + String.join(", ", currentLevelNodes)); + } + } + + private static int getHeight(Node head) { + if (head == null) { + return 0; + } + int leng = 1; + for (int i = 0; i < head.childCnt; i++) { + if (head.childs[i] != null) { + leng = Math.max(leng, 1 + getHeight(head.childs[i])); + } + } + return leng; + } + + public static void main(String[] args) { + Node main = new Node(5); + Node a = new Node(2); + Node b = new Node(6); + Node c = new Node(1); + final Node d = new Node(2); + final Node e = new Node(5); + final Node f = new Node(6); + main.addChild(a); + main.addChild(b); + a.addChild(c); + a.addChild(d); + b.addChild(e); + b.addChild(f); + printer(main); + } +} diff --git a/students/23K0365/pom.xml b/students/23K0365/pom.xml index a509af59c..b0b85bd9a 100644 --- a/students/23K0365/pom.xml +++ b/students/23K0365/pom.xml @@ -42,6 +42,7 @@ 23K0365-p28 23K0365-p29 23K0365-p30 + 23K0365-p31 23K0365-p32 23K0365-p112