Некоторые ошибки:
break if input == q
q - не определенная переменная.Вместо этого используйте строку:
break if input == "q"
STDIN.gets
включает \n
.Поэтому вы должны сравнить с "q \ n" или strip
входными данными.
В зависимости от исполнения, вы увидите результат после его окончания.Используйте STDOUT.flush
для немедленного отображения результата.
sort
не меняет ваш массив.используйте вместо этого sort!
.После сортировки самое большое значение в конце.Вместо numbers.first - numbers.last
вам нужен numbers.last - numbers.first
(или вам нужен `реверс.
Всего:
numbers = [randomNo = rand(50),randomNo = rand(50),randomNo = rand(50),randomNo = rand(50)]
loop do
puts "type s to start and q to quit"
input = STDIN.gets
break if input.strip == "q"
numbers.sort!
puts numbers.inspect
puts numbers.last - numbers.first
STDOUT.flush
end
Другая версия:
puts "Push any key unless q to start"
STDOUT.flush
while STDIN.gets.strip != "q"
numbers = Array.new(5){ rand(50) }.sort
puts numbers.inspect
puts numbers.last - numbers.first
puts "type q to quit - any other key to repeat."
STDOUT.flush
end