From 205b10ff9dd2bb1321d2f1134a4cb4743afc6c2a Mon Sep 17 00:00:00 2001 From: Artem Darius Weber Date: Fri, 29 Nov 2024 15:51:50 +0300 Subject: [PATCH] release:feat: add interactive menu for task selection and input methods --- lab3_task1_funcation_block_arg/main.rb | 77 ++++++++++++++++++++------ 1 file changed, 60 insertions(+), 17 deletions(-) diff --git a/lab3_task1_funcation_block_arg/main.rb b/lab3_task1_funcation_block_arg/main.rb index c03b79e..20c5ebe 100644 --- a/lab3_task1_funcation_block_arg/main.rb +++ b/lab3_task1_funcation_block_arg/main.rb @@ -1,5 +1,4 @@ - def indices_sorted_by_descending_values(array) indices = array.each_with_index.to_a sorted_indices = indices.sort_by { |(element, index)| -element } @@ -49,23 +48,67 @@ def prime_divisors(number) end -# Ex -array = [5, 3, 8, 1, 7] -puts "Indices in order of decreasing elements:" -puts indices_sorted_by_descending_values(array).join(", ") +# IO + +def get_array_input(input_method) + if input_method == 1 + puts "Введите элементы массива через пробел:" + gets.chomp.split.map(&:to_i) + elsif input_method == 2 + puts "Введите имя файла:" + file_name = gets.chomp + File.read(file_name).split.map(&:to_i) + else + raise "Неверный метод ввода." + end +end + +def get_number_input(input_method) + if input_method == 1 + puts "Введите число:" + gets.chomp.to_i + elsif input_method == 2 + puts "Введите имя файла:" + file_name = gets.chomp + File.read(file_name).to_i + else + raise "Неверный метод ввода." + end +end -array = [5, 1, 8, 3, 8, 7] -puts "Elements between first and second maximum:" -puts elements_between_first_and_second_max(array).join(", ") +puts "Выберите задачу для выполнения:" +puts "1. Вывести индексы массива в порядке убывания элементов." +puts "2. Найти элементы между первым и вторым максимальным." +puts "3. Найти элементы между первым и последним максимальным." +puts "4. Найти минимальный четный элемент." +puts "5. Найти все простые делители числа." -array = [5, 1, 8, 3, 7, 8] -puts "Elements between first and last maximum:" -puts elements_between_first_and_last_max(array).join(", ") +task_number = gets.chomp.to_i -array = [5, 2, 8, 3, 7] -puts "Minimal even element:" -puts minimal_even_element(array) +puts "Выберите метод ввода данных (1: С клавиатуры, 2: Из файла):" +input_method = gets.chomp.to_i -number = 28 -puts "Prime divisors:" -puts prime_divisors(number).join(", ") +case task_number +when 1 + array = get_array_input(input_method) + puts "Индексы в порядке убывания элементов:" + puts indices_sorted_by_descending_values(array).join(", ") +when 2 + array = get_array_input(input_method) + puts "Элементы между первым и вторым максимальным:" + puts elements_between_first_and_second_max(array).join(", ") +when 3 + array = get_array_input(input_method) + puts "Элементы между первым и последним максимальным:" + puts elements_between_first_and_last_max(array).join(", ") +when 4 + array = get_array_input(input_method) + puts "Минимальный четный элемент:" + puts minimal_even_element(array) +when 5 + number = get_number_input(input_method) + puts "Простые делители числа:" + puts prime_divisors(number).join(", ") +else + puts "Неверный номер задачи." +end