Add main program to execute specific methods based on command-line arguments and read array from file
parent
386361564b
commit
103cbbb25d
@ -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 <method_name> <file_path>"
|
||||
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
|
@ -0,0 +1 @@
|
||||
-10 -5 0 3 5 -2
|
Loading…
Reference in new issue