Версия для печати темы
Нажмите сюда для просмотра этой темы в оригинальном формате
Форум программистов > Ruby: Общие вопросы > Помогите разобраться с задачей


Автор: Poput4ik 21.11.2009, 21:24
Здравствуйте уважаемые форумчане. Написал программу на основе задачи 
Цитата

Целое трёхзначное число вводится с клавиатуры. Найти сумму его цифр. 
 Не могу понять где допустил ошибку. Раньше работал только с кубейсиком. Заранее спасибо smile 
Код

def num_digits(n)
if n<100 || n>999
  return "ERROR"
  else
    def sum_digits(n)
    s = 0
    while n > 0
      s = s + n%10
      n = n/10
    end
    return s
  end
end

puts s


Автор: source777 22.11.2009, 13:51
Цитата(Poput4ik @  21.11.2009,  21:24 Найти цитируемый пост)
def sum_digits(n)

что это делает посреди тела метода?

Цитата(Poput4ik @  21.11.2009,  21:24 Найти цитируемый пост)
return "ERROR"
А это что за фигня? Какой вообще семантический смысл метода num_digits?

Цитата(Poput4ik @  21.11.2009,  21:24 Найти цитируемый пост)
Раньше работал только с кубейсиком.
В таком случае, лучше сразу забудь всё что связано с кубейсиком, ибо тебе будет мешать всё, что ты не забудешь по этой теме.

P.S. Раз уж у тебя так строго задан диапазон, то весь расчёт суммы цифр уместится в одну строку:
Код

  n = 0
  while (n < 100 || n >= 1000)
    puts "Enter number in range [100; 999]"
    n = gets.to_i
  end
  digits_sum = n/100%10 + n/10%10 + n%10
  puts "digits_sum = #{digits_sum}"




Автор: Poput4ik 22.11.2009, 21:44
source777, 
Спасибо за помощь  smile Разобрался с задачей. 

Автор: source777 22.11.2009, 23:31
Цитата(Poput4ik @  22.11.2009,  21:44 Найти цитируемый пост)
Разобрался с задачей.

Poput4ik, на мой взгляд, тебе для начала следует с основами Ruby ознакомиться, а уж потом с задачами разбираться...


Powered by Invision Power Board (http://www.invisionboard.com)
© Invision Power Services (http://www.invisionpower.com)