Skip to content
This repository was archived by the owner on Dec 28, 2024. It is now read-only.

Labs21-32 #694

Merged
merged 3 commits into from
Dec 14, 2024
Merged
Show file tree
Hide file tree
Changes from all commits
Commits
File filter

Filter by extension

Filter by extension


Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
13 changes: 13 additions & 0 deletions students/23K9901/23K9901-p21/pom.xml
Original file line number Diff line number Diff line change
@@ -0,0 +1,13 @@
<?xml version="1.0" encoding="UTF-8"?>
<project xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xmlns="http://maven.apache.org/POM/4.0.0"
xsi:schemaLocation="http://maven.apache.org/POM/4.0.0 http://maven.apache.org/xsd/maven-4.0.0.xsd">
<modelVersion>4.0.0</modelVersion>
<parent>
<artifactId>23K9901</artifactId>
<groupId>ru.mirea.practice</groupId>
<version>2024.1</version>
<relativePath>../pom.xml</relativePath>
</parent>
<artifactId>23K9901-p21</artifactId>
<description>Второе задание</description>
</project>
Original file line number Diff line number Diff line change
@@ -0,0 +1,16 @@
package ru.mirea.practice.s0000001;

public class ArrayElementGetter<T> {
private T[] array;

public ArrayElementGetter(T[] array) {
this.array = array;
}

public T getElementByIndex(int index) {
if (index < 0 || index >= array.length) {
throw new IndexOutOfBoundsException("Invalid index: " + index);
}
return array[index];
}
}
Original file line number Diff line number Diff line change
@@ -0,0 +1,13 @@
package ru.mirea.practice.s0000001;

abstract class Main {
public static void main(String[] args) {
Integer[] numbers = {10, 20, 30, 40, 50};
ArrayElementGetter<Integer> intGetter = new ArrayElementGetter<>(numbers);
System.out.println("Элемент по индексу 2: " + intGetter.getElementByIndex(2));

String[] words = {"apple", "banana", "cherry"};
ArrayElementGetter<String> stringGetter = new ArrayElementGetter<>(words);
System.out.println("Элемент по индексу 1: " + stringGetter.getElementByIndex(1));
}
}
13 changes: 13 additions & 0 deletions students/23K9901/23K9901-p22/pom.xml
Original file line number Diff line number Diff line change
@@ -0,0 +1,13 @@
<?xml version="1.0" encoding="UTF-8"?>
<project xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xmlns="http://maven.apache.org/POM/4.0.0"
xsi:schemaLocation="http://maven.apache.org/POM/4.0.0 http://maven.apache.org/xsd/maven-4.0.0.xsd">
<modelVersion>4.0.0</modelVersion>
<parent>
<artifactId>23K9901</artifactId>
<groupId>ru.mirea.practice</groupId>
<version>2024.1</version>
<relativePath>../pom.xml</relativePath>
</parent>
<artifactId>23K9901-p22</artifactId>
<description>Второе задание</description>
</project>
Original file line number Diff line number Diff line change
@@ -0,0 +1,16 @@
package ru.mirea.practice.s0000001;

public class ArrayElementGetter<T> {
private T[] array;

public ArrayElementGetter(T[] array) {
this.array = array;
}

public T getElementByIndex(int index) {
if (index < 0 || index >= array.length) {
throw new IndexOutOfBoundsException("Invalid index: " + index);
}
return array[index];
}
}
Original file line number Diff line number Diff line change
@@ -0,0 +1,13 @@
package ru.mirea.practice.s0000001;

abstract class Main3 {
public static void main(String[] args) {
Integer[] numbers = {10, 20, 30, 40, 50};
ArrayElementGetter<Integer> intGetter = new ArrayElementGetter<>(numbers);
System.out.println("Элемент по индексу 2: " + intGetter.getElementByIndex(2));

String[] words = {"apple", "banana", "cherry"};
ArrayElementGetter<String> stringGetter = new ArrayElementGetter<>(words);
System.out.println("Элемент по индексу 1: " + stringGetter.getElementByIndex(1));
}
}
13 changes: 13 additions & 0 deletions students/23K9901/23K9901-p23/pom.xml
Original file line number Diff line number Diff line change
@@ -0,0 +1,13 @@
<?xml version="1.0" encoding="UTF-8"?>
<project xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xmlns="http://maven.apache.org/POM/4.0.0"
xsi:schemaLocation="http://maven.apache.org/POM/4.0.0 http://maven.apache.org/xsd/maven-4.0.0.xsd">
<modelVersion>4.0.0</modelVersion>
<parent>
<artifactId>23K9901</artifactId>
<groupId>ru.mirea.practice</groupId>
<version>2024.1</version>
<relativePath>../pom.xml</relativePath>
</parent>
<artifactId>23K9901-p23</artifactId>
<description>Второе задание</description>
</project>
Original file line number Diff line number Diff line change
@@ -0,0 +1,9 @@
package ru.mirea.practice.s0000001;

abstract class Main {
public static void main(String[] args) {
String rpnExpression = "3 4 + 2 * 7 /";
double result = RpnCalculator.calculate(rpnExpression);
System.out.println("Результат: " + result);
}
}
Original file line number Diff line number Diff line change
@@ -0,0 +1,47 @@
package ru.mirea.practice.s0000001;



import java.util.Stack;

abstract class RpnCalculator {
public static double calculate(String expression) {
Stack<Double> stack = new Stack<>();
String[] tokens = expression.split("\\s+");

for (String token : tokens) {
if (isOperator(token)) {
double b = stack.pop();
double a = stack.pop();
stack.push(applyOperation(a, b, token));
} else {
stack.push(Double.parseDouble(token));
}
}

return stack.pop();
}

private static boolean isOperator(String token) {
return "+".equals(token) || "-".equals(token) || "*".equals(token) || "/".equals(token);
}

private static double applyOperation(double a, double b, String operator) {
switch (operator) {
case "+":
return a + b;
case "-":
return a - b;
case "*":
return a * b;
case "/":
if (b == 0) {
throw new ArithmeticException("Деление на ноль");
}
return a / b;
default:
throw new IllegalArgumentException("Недопустимый оператор: " + operator);
}
}
}

13 changes: 13 additions & 0 deletions students/23K9901/23K9901-p24/pom.xml
Original file line number Diff line number Diff line change
@@ -0,0 +1,13 @@
<?xml version="1.0" encoding="UTF-8"?>
<project xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xmlns="http://maven.apache.org/POM/4.0.0"
xsi:schemaLocation="http://maven.apache.org/POM/4.0.0 http://maven.apache.org/xsd/maven-4.0.0.xsd">
<modelVersion>4.0.0</modelVersion>
<parent>
<artifactId>23K9901</artifactId>
<groupId>ru.mirea.practice</groupId>
<version>2024.1</version>
<relativePath>../pom.xml</relativePath>
</parent>
<artifactId>23K9901-p24</artifactId>
<description>Второе задание</description>
</project>
Original file line number Diff line number Diff line change
@@ -0,0 +1,15 @@
package ru.mirea.practice.s0000001;

public abstract class AbstractQueue implements Queue {
protected int size = 0;

@Override
public int size() {
return size;
}

@Override
public boolean isEmpty() {
return size == 0;
}
}
Original file line number Diff line number Diff line change
@@ -0,0 +1,58 @@
package ru.mirea.practice.s0000001;

public class ArrayQueue extends AbstractQueue {
private Object[] elements = new Object[10];
private int head = 0;
private int tail = 0;

@Override
public void enqueue(Object element) {
if (element == null) {
throw new IllegalArgumentException("Null elements are not allowed");
}
ensureCapacity(size + 1);
elements[tail] = element;
tail = (tail + 1) % elements.length;
size++;
}

@Override
public Object element() {
if (isEmpty()) {
throw new IllegalStateException("Queue is empty");
}
return elements[head];
}

@Override
public Object dequeue() {
if (isEmpty()) {
throw new IllegalStateException("Queue is empty");
}
final Object result = elements[head];
elements[head] = null;
head = (head + 1) % elements.length;
size--;
return result;
}

@Override
public void clear() {
elements = new Object[10];
head = 0;
tail = 0;
size = 0;
}

private void ensureCapacity(int capacity) {
if (capacity > elements.length) {
Object[] newArray = new Object[2 * elements.length];
for (int i = 0; i < size; i++) {
newArray[i] = elements[(head + i) % elements.length];
}
elements = newArray;
head = 0;
tail = size;
}
}
}
Original file line number Diff line number Diff line change
@@ -0,0 +1,60 @@
package ru.mirea.practice.s0000001;

public class LinkedQueue extends AbstractQueue {
private static class Node {
Object value;
Node next;

Node(Object value, Node next) {
this.value = value;
this.next = next;
}
}

private Node head;
private Node tail;

@Override
public void enqueue(Object element) {
if (element == null) {
throw new IllegalArgumentException("Null elements are not allowed");
}
Node newNode = new Node(element, null);
if (isEmpty()) {
head = newNode;
} else {
tail.next = newNode;
}
tail = newNode;
size++;
}

@Override
public Object element() {
if (isEmpty()) {
throw new IllegalStateException("Queue is empty");
}
return head.value;
}

@Override
public Object dequeue() {
if (isEmpty()) {
throw new IllegalStateException("Queue is empty");
}
final Object value = head.value;
head = head.next;
if (head == null) {
tail = null;
}
size--;
return value;
}

@Override
public void clear() {
head = null;
tail = null;
size = 0;
}
}
Original file line number Diff line number Diff line change
@@ -0,0 +1,25 @@
package ru.mirea.practice.s0000001;

abstract class Main {
public static void main(String[] args) {
Queue arrayQueue = new ArrayQueue();
Queue linkedQueue = new LinkedQueue();

testQueue(arrayQueue);
testQueue(linkedQueue);
}

private static void testQueue(Queue queue) {
queue.enqueue(1);
queue.enqueue(2);
queue.enqueue(3);

System.out.println("First element: " + queue.element());
System.out.println("Dequeued: " + queue.dequeue());
System.out.println("Size: " + queue.size());
System.out.println("Is empty: " + queue.isEmpty());

queue.clear();
System.out.println("Cleared. Is empty: " + queue.isEmpty());
}
}
Original file line number Diff line number Diff line change
@@ -0,0 +1,16 @@
package ru.mirea.practice.s0000001;

public interface Queue {

void enqueue(Object element);

Object element();

Object dequeue();

int size();

boolean isEmpty();

void clear();
}
13 changes: 13 additions & 0 deletions students/23K9901/23K9901-p25/pom.xml
Original file line number Diff line number Diff line change
@@ -0,0 +1,13 @@
<?xml version="1.0" encoding="UTF-8"?>
<project xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xmlns="http://maven.apache.org/POM/4.0.0"
xsi:schemaLocation="http://maven.apache.org/POM/4.0.0 http://maven.apache.org/xsd/maven-4.0.0.xsd">
<modelVersion>4.0.0</modelVersion>
<parent>
<artifactId>23K9901</artifactId>
<groupId>ru.mirea.practice</groupId>
<version>2024.1</version>
<relativePath>../pom.xml</relativePath>
</parent>
<artifactId>23K9901-p25</artifactId>
<description>Второе задание</description>
</project>
Original file line number Diff line number Diff line change
@@ -0,0 +1,5 @@
package ru.mirea.practice.s0000001;

public interface Chair {
void sit();
}
Original file line number Diff line number Diff line change
@@ -0,0 +1,10 @@
package ru.mirea.practice.s0000001;

public interface ChairFactory {

VictorianChair createVictorianChair(int age);

MultifunctionalChair createMultifunctionalChair();

MagicChair createMagicChair();
}
Original file line number Diff line number Diff line change
@@ -0,0 +1,7 @@
package ru.mirea.practice.s0000001;

public class Client {
public void sit(Chair chair) {
chair.sit();
}
}
Loading
Loading