diff --git a/lab1/README.md b/lab1/README.md index 21c405d..054a4e8 100644 --- a/lab1/README.md +++ b/lab1/README.md @@ -60,6 +60,41 @@ Task: ruby 04_number_funcs.rb ``` +## 05. Number items operations + +Task: + +Написать методы, которые находят минимальный, элементы, +номер первого положительного элемента. Каждая операция в отдельном +методе. Решить задачу с помощью циклов(for и while). + +```bash +ruby 05_number_items_operations.rb +``` + +## 06. Command line file arguments + +Task: + +Написать программу, которая принимает как аргумент два +значения. Первое значение говорит, какой из методов задачи 1 +выполнить, второй говорит о том, откуда читать список аргументом +должен быть написан адрес файла. Далее необходимо прочитать массив +и выполнить метод. + +```bash +ruby 06_command_line_file_arguments.rb min numbers.txt +``` + +```bash +ruby 06_command_line_file_arguments.rb first_positive numbers.txt +``` + +```bash +ruby 06_command_line_file_arguments.rb first_positive_index numbers.txt +``` + + --- Author: Artem-Darius Weber diff --git a/lab1/src/06_command_line_file_arguments.rb b/lab1/src/06_command_line_file_arguments.rb new file mode 100644 index 0000000..ea6bb5e --- /dev/null +++ b/lab1/src/06_command_line_file_arguments.rb @@ -0,0 +1,62 @@ + + +def find_min_element(arr) + min_element = arr[0] + arr.each do |element| + min_element = element if element < min_element + end + min_element +end + + +def find_first_positive_index(arr) + arr.each_with_index do |element, index| + return index if element > 0 + end + nil +end + + +def find_first_positive(arr) + arr.each do |element| + return element if element > 0 + end + nil +end + + +def main + method_name = ARGV[0] + file_path = ARGV[1] + + if method_name.nil? || file_path.nil? + puts "Неправльный формат ввода. Использование: ruby program.rb " + puts "method_name: 'min', 'first_positive_index' или 'first_positive'" + exit + end + + begin + array = File.read(file_path).split.map(&:to_i) + rescue Errno::ENOENT + puts "Файл не найден: #{file_path}" + exit + end + + case method_name + when 'min' + result = find_min_element(array) + puts "Минимальный элемент: #{result}" + when 'first_positive_index' + result = find_first_positive_index(array) + puts "Индекс первого положительного элемента: #{result.nil? ? 'Нет положительного элемента' : result}" + when 'first_positive' + result = find_first_positive(array) + puts "Первый положительный элемент: #{result.nil? ? 'Нет положительного элемента' : result}" + else + puts "Неизвестный метод: #{method_name}" + puts "Доступные методы: 'min', 'first_positive_index', 'first_positive'" + end +end + + +main if __FILE__ == $0 diff --git a/lab1/src/numbers.txt b/lab1/src/numbers.txt new file mode 100644 index 0000000..98ab3dd --- /dev/null +++ b/lab1/src/numbers.txt @@ -0,0 +1 @@ +-10 -5 0 3 5 -2 \ No newline at end of file