diff --git a/src/main/java/ru/tn/courses/vkoroplyasova/v5/task1/Subtask_1.java b/src/main/java/ru/tn/courses/vkoroplyasova/v5/task1/Subtask_1.java new file mode 100644 index 00000000..ef40fc97 --- /dev/null +++ b/src/main/java/ru/tn/courses/vkoroplyasova/v5/task1/Subtask_1.java @@ -0,0 +1,38 @@ +package ru.tn.courses.vkoroplyasova.v5.task1; +/* +Дана последовательность натуральных чисел a1, a2, ..., an. Создать массив из четных чисел этой последовательности. +Если таких чисел нет, то вывести сообщение об этом факте. + */ + +import java.util.ArrayList; +import java.util.concurrent.ThreadLocalRandom; + +public class Subtask_1 { + public static void main(String[] args){ + ArrayList result = new ArrayList<>(); + result = generate_even_list(generate_list()); + if (result.size() == 0) + System.out.println("Import list does not contain even numbers"); + else + System.out.println("Generated even numbers list: " + result); + } + + public static ArrayList generate_list(){ + int count = 0; + int import_size = ThreadLocalRandom.current().nextInt(1, 31); + ArrayList import_list = new ArrayList<>(); + for(count = 0; count < import_size; count++) + import_list.add(ThreadLocalRandom.current().nextInt(0, 999)); + System.out.println("Generated numbers list: " + import_list); + return import_list; + } + + public static ArrayList generate_even_list(ArrayList import_list){ + int count = 0; + ArrayList even_list = new ArrayList<>(); + for(count = 0; count < import_list.size(); count++) + if (import_list.get(count) % 2 == 0) + even_list.add(import_list.get(count)); + return even_list; + } +} diff --git a/src/main/java/ru/tn/courses/vkoroplyasova/v5/task1/Subtask_2.java b/src/main/java/ru/tn/courses/vkoroplyasova/v5/task1/Subtask_2.java new file mode 100644 index 00000000..f8008e7b --- /dev/null +++ b/src/main/java/ru/tn/courses/vkoroplyasova/v5/task1/Subtask_2.java @@ -0,0 +1,48 @@ +package ru.tn.courses.vkoroplyasova.v5.task1; + +/* +Каждый солнечный день улитка, сидящая на дереве, поднимается вверх на 2 см, а каждый пасмурный день опускается вниз на +1 см, В начале наблюдения улитка находится в A см от земли на B-метровом дереве. Имеется 30-элементный массив, + содержащий сведения о том, был ли соответствующий день наблюдения пасмурным или солнечным. Написать программу, +определяющую местоположение улитки к концу 30-го дня наблюдения. + */ + +import java.util.ArrayList; +import java.util.concurrent.ThreadLocalRandom; + +// Для определенности примем: 1 - солнечный день, 0 - пасмурный +public class Subtask_2 { + public static void main(String[] args) { + System.out.println("Final position: " + define_position(generate_initial_conditions())); + } + + public static ArrayList generate_initial_conditions(){ + ArrayList conditions_list = new ArrayList<>(); + int B = ThreadLocalRandom.current().nextInt(0, 100); + int A = ThreadLocalRandom.current().nextInt(0, B); + conditions_list.add(A); + conditions_list.add(B); + for(int count = 2; count < 32; count++) + conditions_list.add(ThreadLocalRandom.current().nextInt(0, 2)); + System.out.println("Conditions_list: " + conditions_list); + return conditions_list; + } + + public static int define_position(ArrayList conditions_list){ + int position = conditions_list.get(0); + int A = conditions_list.get(0); + int B = conditions_list.get(1); + for(int count = 2;count < conditions_list.size(); count++) + if (conditions_list.get(count) == 0) + if (position - 1 < 0) + position = 0; + else + position -= 1; + else if (conditions_list.get(count) == 1) + if (position + 2 > B) + position = B; + else + position += 2; + return position; + } +} diff --git a/src/main/java/ru/tn/courses/vkoroplyasova/v5/task1/Subtask_3.java b/src/main/java/ru/tn/courses/vkoroplyasova/v5/task1/Subtask_3.java new file mode 100644 index 00000000..b55afc88 --- /dev/null +++ b/src/main/java/ru/tn/courses/vkoroplyasova/v5/task1/Subtask_3.java @@ -0,0 +1,42 @@ +package ru.tn.courses.vkoroplyasova.v5.task1; + +//Сортировка Шелла. Дан массив n действительных чисел. Требуется упорядочить его по возрастанию. Делается это следующим +// образом: сравниваются два соседних элемента ai и аi+1. Если ai ≤ ai+1, то продвигаются на один элемент вперед. +// Если ai > ai+1, то производится перестановка и сдвигаются на один элемент назад. Составить алгоритм этой сортировки. + +import java.util.ArrayList; +import java.util.concurrent.ThreadLocalRandom; + +public class Subtask_3 { + public static void main(String[] args){ + shell_sort(generate_list()); + } + + public static ArrayList generate_list(){ + int n = ThreadLocalRandom.current().nextInt(2, 10); + ArrayList import_list = new ArrayList<>(); + for(int count = 0; count < n; count++) + import_list.add(ThreadLocalRandom.current().nextDouble(-999, 999)); + System.out.println("Generated list: " + import_list); + return import_list; + } + + public static ArrayList shell_sort(ArrayList import_list){ + ArrayList sorted_list = import_list; + int i = 0; + double temp = 0; + while(i < sorted_list.size() - 1){ + if(sorted_list.get(i) <= sorted_list.get(i + 1)) + i++; + else{ + temp = sorted_list.get(i); + sorted_list.set(i, sorted_list.get(i + 1)); + sorted_list.set(i + 1, temp); + if(i != 0) + i--; + } + } + System.out.println("Sorted list: " + sorted_list); + return sorted_list; + } +}