Здравствуйте!
Урок-9 Задача 9-6 после добавления нового if
программа стала неверно работать. Всегда пишет: негритят
.
def sklonenie(number, krokodil, krokodila, krokodilov)
# проверим входные данные на правильность
if (number == nil || !number.is_a?(Numeric))
number = 0 # если первый параметр пустой или не число, то продолжаем как будто он нулевой
end
if (number >= 11 || number <= 14)
return krokodilov
end
ostatok = number % 10 # склонение определяется последней цифрой в числе
if (ostatok == 1) # для 1 - именительный падеж (Кто? Что?)
return krokodil
elsif (ostatok >= 2 && ostatok <= 4) # для 2-4 - родительный падеж (Кого? Чего?)
return krokodila
# 5-9 или ноль – родительный падеж и множественное число
elsif (ostatok >= 5 && ostatok <= 9 || ostatok == 0)
return krokodilov
end
end
# берем из командной строки кол-во негритят
skolko = ARGV[0].to_i
# выводим первую строчку детской считалки из романа Агаты Кристи
puts "#{skolko} #{sklonenie(skolko, "негритёнок", "негритёнка", "негритят")} " +
"#{sklonenie(skolko, "пошел", "пошли", "пошли")} купаться в море!"
Условие внутри if
— всегда выполнено:
if (number >= 11 || number <= 14)
Вы написали если число больше либо равно 11 ИЛИ меньше или равно 14-ти
. Любое число подходит.
Чтобы написать правильное условие, замените ||
на &&
— это логическое И.
Прочитайте ещё раз про логические операторы в конспекте урока 4.