Задача 9-6 перестала работать после добавления нового if

[Д] Дмитрий, 21 июля 2016, 19:51 , 2 подписчика

Здравствуйте!

Урок-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, "пошел", "пошли", "пошли")} купаться в море!"

Обсуждение (1)


Вадим Венедиктов Учитель

[В]

Условие внутри if — всегда выполнено:

if (number >= 11 || number <= 14)

Вы написали если число больше либо равно 11 ИЛИ меньше или равно 14-ти. Любое число подходит.

Чтобы написать правильное условие, замените || на && — это логическое И.

Прочитайте ещё раз про логические операторы в конспекте урока 4.