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

Лабораторные 21-30 + 32 #704

Merged
merged 1 commit 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/23K0087/23K0087-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>23K0087</artifactId>
<groupId>ru.mirea.practice</groupId>
<version>2024.1</version>
<relativePath>../pom.xml</relativePath>
</parent>
<artifactId>23K0087-p21</artifactId>
<description>Двадцать первое задание</description>
</project>
Original file line number Diff line number Diff line change
@@ -0,0 +1,21 @@
package ru.mirea.practice.s23k0087.task1;

import java.util.Arrays;
import java.util.List;

public abstract class ArrayToList {

public static <E> List<E> convertArrayToList(E[] array) {
return Arrays.asList(array);
}

public static void main(String[] args) {
String[] arrayStr = {"Прибыл", "Сатору", "Годжо"};
List<String> listStr = convertArrayToList(arrayStr);
System.out.println("List String: " + listStr);

Integer[] arrayInt = {2, 0, 3, 1};
List<Integer> listInt = convertArrayToList(arrayInt);
System.out.println("List Integer: " + listInt);
}
}
Original file line number Diff line number Diff line change
@@ -0,0 +1,50 @@
package ru.mirea.practice.s23k0087.tasks2and3;

public class GenericArr<E> {
private final E[] array;

public GenericArr(E[] elements) {
this.array = elements;
}

public E get(int index) {

if (index >= 0 && index < array.length) {
return array[index];
} else {
throw new IndexOutOfBoundsException("Index: " + index + ", Size: " + array.length);
}
}

public void set(int index, E element) {
if (index >= 0 && index < array.length) {
array[index] = element;
} else {
throw new IndexOutOfBoundsException("Index: " + index + ", Size: " + array.length);
}
}

public E getElementByIndex(int index) {
if (index < 0 || index >= array.length) {
throw new IndexOutOfBoundsException("Index: " + index + ", Size: " + array.length);
}
return array[index];
}

@Override
public String toString() {
StringBuilder sb = new StringBuilder("[");
for (int i = 0; i < array.length; i++) {
sb.append(array[i]);
if (i < array.length - 1) {
sb.append(", ");
}
}
sb.append("]");
return sb.toString();
}

public int size() {
return array.length;
}
}
Original file line number Diff line number Diff line change
@@ -0,0 +1,17 @@
package ru.mirea.practice.s23k0087.tasks2and3;

public abstract class Tester {
public static void main(String[] args) {
String[] arrayStr = {"Volkswagen", "Das", "Auto"};
GenericArr<String> stringGenericArr = new GenericArr<>(arrayStr);
System.out.println(stringGenericArr);

Long[] arrayLong = {2031L, 911922L, 1234567890L};
GenericArr<Long> longGenericArr = new GenericArr<>(arrayLong);
System.out.println(longGenericArr);

Double[] arrayDouble = {20.31, 0.19293912, 0.41413, 0.221};
GenericArr<Double> doubleGenericArr = new GenericArr<>(arrayDouble);
System.out.println(doubleGenericArr);
}
}
13 changes: 13 additions & 0 deletions students/23K0087/23K0087-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>23K0087</artifactId>
<groupId>ru.mirea.practice</groupId>
<version>2024.1</version>
<relativePath>../pom.xml</relativePath>
</parent>
<artifactId>23K0087-p22</artifactId>
<description>Двадцать второе задание</description>
</project>
Original file line number Diff line number Diff line change
@@ -0,0 +1,42 @@
package ru.mirea.practice.s23k0087.task1;

import java.util.Stack;

public abstract class Calculator {
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);
}
}

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

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();
}
}
Original file line number Diff line number Diff line change
@@ -0,0 +1,10 @@
package ru.mirea.practice.s23k0087.task1;

public abstract class Tester {
public static void main(String[] args) {
String expression = "4 8 - 2 / 7 *";
System.out.println("Calculating ((4 - 8) / 2) * 7");
double result = Calculator.calculate(expression);
System.out.println("Result: " + result);
}
}
13 changes: 13 additions & 0 deletions students/23K0087/23K0087-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>23K0087</artifactId>
<groupId>ru.mirea.practice</groupId>
<version>2024.1</version>
<relativePath>../pom.xml</relativePath>
</parent>
<artifactId>23K0087-p23</artifactId>
<description>Двадцать третье задание</description>
</project>
Original file line number Diff line number Diff line change
@@ -0,0 +1,58 @@
package ru.mirea.practice.s23k0087.task1;

public final class ArrayQueue {

private Object[] queue = new Object[16];
private int head = 0;
private int tail = 0;
private int size = 0;

public static ArrayQueue createQueue() {
return new ArrayQueue();
}

public void enqueue(Object element) {
ensureCapacity(size + 1);
queue[tail] = element;
tail = (tail + 1) % queue.length;
size++;
}

public Object getFirstElement() {
return queue[head];
}

public Object dequeue() {
Object result;
result = queue[head];
queue[head] = null;
head = (head + 1) % queue.length;
size--;
return result;
}

public int size() {
return size;
}

public boolean isEmpty() {
return size == 0;
}

public void clear() {
queue = new Object[16];
head = tail = size = 0;
}

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

public final class ArrayQueueAdt {

private Object[] queue = new Object[16];
private int head = 0;
private int tail = 0;
private int size = 0;

public static void enqueue(ArrayQueueAdt queueAdt, Object element) {
ensureCapacity(queueAdt, queueAdt.size + 1);
queueAdt.queue[queueAdt.tail] = element;
queueAdt.tail = (queueAdt.tail + 1) % queueAdt.queue.length;
queueAdt.size++;
}

public static Object getFirstElement(ArrayQueueAdt queueAdt) {
return queueAdt.queue[queueAdt.head];
}

public static Object dequeue(ArrayQueueAdt queueAdt) {
Object result;
result = queueAdt.queue[queueAdt.head];
queueAdt.queue[queueAdt.head] = null;
queueAdt.head = (queueAdt.head + 1) % queueAdt.queue.length;
queueAdt.size--;
return result;
}

public static int size(ArrayQueueAdt queueAdt) {
return queueAdt.size;
}

public static boolean isEmpty(ArrayQueueAdt queueAdt) {
return queueAdt.size == 0;
}

public static void clear(ArrayQueueAdt queueAdt) {
queueAdt.queue = new Object[16];
queueAdt.head = queueAdt.tail = queueAdt.size = 0;
}

private static void ensureCapacity(ArrayQueueAdt queueAdt, int capacity) {
if (capacity > queueAdt.queue.length) {
Object[] newQueue = new Object[queueAdt.queue.length * 2];
for (int i = 0; i < queueAdt.size; i++) {
newQueue[i] = queueAdt.queue[(queueAdt.head + i) % queueAdt.queue.length];
}
queueAdt.queue = newQueue;
queueAdt.head = 0;
queueAdt.tail = queueAdt.size;
}
}
}
Original file line number Diff line number Diff line change
@@ -0,0 +1,58 @@
package ru.mirea.practice.s23k0087.task1;

public final class ArrayQueueModule {

private ArrayQueueModule() {
}

private static final int INITIAL_CAPACITY = 16;
private static Object[] queue = new Object[INITIAL_CAPACITY];
private static int head = 0;
private static int tail = 0;
private static int size = 0;

public static void enqueue(Object element) {
ensureCapacity(size + 1);
queue[tail] = element;
tail = (tail + 1) % queue.length;
size++;
}

public static Object getFirstElement() {
return queue[head];
}

public static Object dequeue() {
Object result;
result = queue[head];
queue[head] = null;
head = (head + 1) % queue.length;
size--;
return result;
}

public static int size() {
return size;
}

public static boolean isEmpty() {
return size == 0;
}

public static void clear() {
queue = new Object[INITIAL_CAPACITY];
head = tail = size = 0;
}

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

public abstract class Tester {
public static void main(String[] args) {
ArrayQueueModule.enqueue(0);
ArrayQueueModule.enqueue(1);
ArrayQueueModule.enqueue(2);
ArrayQueueModule.enqueue(3);
System.out.println("The first element: " + ArrayQueueModule.getFirstElement());
ArrayQueueModule.dequeue();
System.out.println("Current size: " + ArrayQueueModule.size());
System.out.println("Queue is empty = " + ArrayQueueModule.isEmpty());
ArrayQueueModule.clear();
System.out.println("Queue is empty = " + ArrayQueueModule.isEmpty());
System.out.println();

ArrayQueueAdt queueAdt = new ArrayQueueAdt();
ArrayQueueAdt.enqueue(queueAdt, 10);
ArrayQueueAdt.enqueue(queueAdt, 13);
ArrayQueueAdt.enqueue(queueAdt, 23);
System.out.println("The first element: " + ArrayQueueAdt.getFirstElement(queueAdt));
ArrayQueueAdt.dequeue(queueAdt);
System.out.println("Current size: " + ArrayQueueAdt.size(queueAdt));
System.out.println("Queue is empty = " + ArrayQueueAdt.isEmpty(queueAdt));
ArrayQueueAdt.clear(queueAdt);
System.out.println("Queue is empty = " + ArrayQueueAdt.isEmpty(queueAdt));
System.out.println();

ArrayQueue queue = new ArrayQueue();
queue.enqueue(301);
queue.enqueue(632);
System.out.println("The first element: " + queue.getFirstElement());
queue.dequeue();
System.out.println("Current size: " + queue.size());
System.out.println("Queue is empty = " + queue.isEmpty());
queue.clear();
System.out.println("Queue is empty = " + queue.isEmpty());
}
}
Loading
Loading