2015-10-10 4 views
-3

Пытается найти будущее значение одной суммы.Как запустить вычисление после того, как методы определены в Ruby?

Я создал и определил текущую стоимость, курс и годы. Они все работают вместе, и теперь я пытаюсь выяснить, как взять введенные числа для каждого и рассчитать их для окончательного значения.

Формула я использую:

(fv = pv * (1+r) ** n) 

, но не уверен, как получить рубин запустить расчет?

Вот мой код программы:

# Расчет БУДУЩЕЙ СТОИМОСТИ ДЛЯ ОДНОГО СУММУ

def input 

    count = 0 
    puts "How much money you would like to invest? The amount must be at least $100 but no more than $50,000. (ex. 1000 = $1,000)" 
    pv = gets.chomp.to_i 

     while ((count < 3) && (pv < 100 || pv > 50000)) 
      puts"" 
      puts "YOU MUST ENTER A VALID NUMBER. PLEASE TRY AGAIN." 
      puts "" 
      count = count + 1 
      puts"" 
      puts "How much money you would like to invest? The amount must be at least $100 but no more than $50,000. (ex. 1000 = $1,000)" 
      pv = gets.chomp.to_i 

      while ((count < 3) && (pv < 100 || pv > 50000)) 
       puts"" 
       puts "YOU MUST ENTER A VALID NUMBER. PLEASE TRY AGAIN." 
       count = count + 1 
       puts"" 
       puts "How much money you would like to invest? The amount must be at least $100 but no more than $50,000. (ex. 1000 = $1,000)" 
       pv = gets.chomp.to_i 
      end 

     end 

     if (count >= 3) 
      puts "" 
      puts "TRY AGAIN LATER..." 
      puts "" && exit 
      return pv 
     end 

    count = 0 
    puts "What is the annual rate of interest? (ex. .08 = 8%) The rate must be greater than 0.00 and less than or equal to 0.20" 
    r = gets.chomp.to_f 

     while ((count <3) && (r < 0.00 || r > 0.20)) 
      puts"" 
      puts 'YOU MUST ENTER A VALID RATE. PLEASE SEE EXAMPLE ABOVE.' 
      puts "" 
      count = count + 1 
      puts "" 
      puts "What is the annual rate of interest? (ex. .08 = 8%) The rate must be greater than 0.00 and less than or equal to 0.20" 
      r = gets.chomp.to_f 

      while ((count <3) && (r < 0.00 || r > 0.20)) 
       puts 'YOU MUST ENTER A VALID RATE. PLEASE TRY AGAIN.' 
       puts "" 
       count = count + 1 
       puts "" 
       puts "What is the annual rate of interest? (ex. .08 = 8%) The rate must be greater than 0.00 and less than or equal to 0.20" 
       r = gets.chomp.to_f 
      end 
     end 

     if (count >=3) 
      puts "" 
      puts "TRY AGAIN LATER..." 
      puts "" && exit 
      return r 
     end 

    count = 0 
    puts "How many years will the investment be for? (ex. 2 = 2 years) Please enter a number between 1 and 30." 
    n = gets.chomp.to_i 

     while ((count < 3) && (n < 1 || n > 30)) 
      puts"" 
      puts"YOU MUST ENTER AT LEAST ONE YEAR. PLEASE SEE EXAMPLE ABOVE." 
      puts"" 
      count = count + 1 
      puts "" 
      puts "How many years will the investment be for? (ex. 2 = 2 years) Please enter a number between 1 and 30." 
      n = gets.chomp.to_i 
      while ((count < 3) && (n < 1 || n > 30)) 
       puts"" 
       puts"PLEASE ENTER A VALID NUMBER. PLEASE TRY AGAIN." 
       puts"" 
       count = count + 1 
       puts"" 
       puts "How many years will the investment be for? (ex. 2 = 2 years) Please enter a number between 1 and 30." 
       n = gets.chomp.to_i 
      end 
end 

     if (count >= 3) 
      puts"" 
      puts "TRY AGAIN LATER..." 
      puts "" && exit 
      return n  
     end 
end 

puts input 


def final_value (fv) 

    pv = 1000  #want user's input here 
    r = 0.05  #want user's input here 
    n = 5  #want user's input here 
    fv = pv * (1+r) ** n 
    puts "After #{n} years you will have $#{fv.round(2)}!" 
    puts "" 
    puts "Press ENTER to exit." 
end 

puts final_value() 

gets 

ответ

0

Вы можете определить метод, как это:

def final_value (pv, r, n) 
    pv * (1+r) ** n 
end 

И тогда вызовите метод с различными значениями pv, r, n. например

# pv = 100 
# r = 0.5 
# n = 10 

# take input from user in console 
puts 'Enter pv: ' 
pv = gets.strip.to_f 
puts 'Enter r: ' 
r = gets.strip.to_f 
puts 'Enter n: ' 
n = gets.strip.to_f 

fv = final_value(pv, r, n) 
puts "fv: #{fv}" 
# => fv: 5766.50390625 
+0

Что делать, если пользователь вводит значения pv, r и n? Как сохранить запись для использования этого метода? – Renee

+0

См. Мой обновленный ответ. Вы можете вводить данные от пользователя, используя метод 'get', а затем:' get.strip', чтобы удалить пробелы и символы новой строки во входном файле, а затем '.to_f', чтобы преобразовать строку в значение float. И сохраните его в соответствующей переменной, как показано в моем обновленном ответе. Дайте мне знать, если у вас есть другие вопросы. –

+0

Я получаю сообщение об ошибке при определении метода ... "'final_value': неправильное количество аргументов (1 для 3) (ArgumentError) – Renee