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


Автор: iskan1188 1.11.2009, 01:16
Помогите, пожалуйста. Начали в колледже изучать  Ruby, дали задание сделать калькулятор который будет выглядеть так:
Цитата

Enter 1st number: 12345
Enter 2nd number: 67890
Enter operation: +

 12345
+67890
------
 80235 
Enter 1st number: 324
Enter 2nd number: 111
Enter operation: -

 324
-111
----
 213 
Enter 1st number: 325
Enter 2nd number: 4405
Enter operation: *

    325
  *4405
  -----
   1625
     0
 1300
1300
-------
1431625 
Enter 1st number: 1234
Enter 2nd number: 4
Enter operation: *

1234
  *4
----
4936


Так как только начал изучать программирование мозгов только вот на такое хватило:
Цитата


while true do
puts 'Enter 1st number:'
number1 = gets.to_i
puts 'Enter 2nd number:'
number2 = gets.to_i
puts 'Enter operation:'
operation = gets.to_i

puts ''
puts number1
puts operation + number2
puts'----------'
puts number1 + operation + number2
puts ''

end


 При этом программа только плюсует, что бы вы там написали и выровнять так как показано на не могу. Пожалуйста, помогите решить проблему.

Автор: source777 1.11.2009, 18:20
Цитата(iskan1188 @  1.11.2009,  01:16 Найти цитируемый пост)
puts 'Enter operation:'
operation = gets.to_i

Это зачем? Ты ведь тут знак действия вводишь, след. to_i будет всегда давать 0.
Вместо этого сохрани сам знак действия, а потом читай http://www.opennet.ru/docs/RUS/ruby_guide/#control, чтобы понять как в зависимости от введённого знака выполнить разные действия.

Автор: shine 2.11.2009, 11:11
[QUOTE=source777,1.11.2009,  18:20]
Цитата(iskan1188 @  1.11.2009,  01:16 Найти цитируемый пост)
а потом читай http://www.opennet.ru/docs/RUS/ruby_guide/#control

или про http://ruby-ua.blogspot.com/2009/03/eval-ruby.html

Автор: source777 2.11.2009, 11:13
Цитата(shine @  2.11.2009,  11:11 Найти цитируемый пост)
или про eval

Не пойдёт, посмотри какой у него должен быть вывод процесса умножения.

Автор: iskan1188 3.11.2009, 00:11
Спасибо всем за помощь в решении проблемы. Почитал литературу, покопался, пока только до такой модели додумался:

Цитата

while true do
puts 'Enter 1st number:'
number1 = gets
puts 'Enter 2nd number:'
number2 = gets
puts 'Enter operation:'
operation = gets

  if operation == "+" then
    result = number1.to_i + number2.to_i
    elsif operation == "-"
    result = number1.to_i - number2.to_i
    elsif operation == "*"
    result = number1.to_i * number2.to_i
    elsif operation == "/"
    result = number1.to_i / number2.to_i
  end

puts number1.to_s
puts operation.to_s + number2.to_s
puts "-------------"
puts result.to_s

end



Но почему-то тоже не работает, почему пока не понял, может, кто может подсказать, где ошибка или что добавить или изменить? 

Автор: source777 3.11.2009, 00:14
Цитата(iskan1188 @  3.11.2009,  00:11 Найти цитируемый пост)
Почитал литературу, покопался, пока только до такой модели додумался

Лучше бы ты по вышеприведённой ссылке сходил, почитал...

Автор: iskan1188 3.11.2009, 00:17
Ссилку CASE? Читаю, но пока не везжаю :(

Автор: iskan1188 3.11.2009, 01:49
Думал-думал, сделал вот так вот:

Цитата

while true do
puts 'Enter 1st number:'
number1 = gets
puts 'Enter 2nd number:'
number2 = gets
puts 'Enter operation:'
operation = gets.strip

  if operation == "+"
    result = number1.to_i + number2.to_i
  elsif operation == "-"
    result = number1.to_i - number2.to_i
  elsif operation == "*"
    result = number1.to_i * number2.to_i
  elsif operation == "/"
    result = number1.to_i / number2.to_i
  end

puts ""
puts number1.to_s
puts operation.to_s + number2.to_s
puts "-------------"
puts result.to_s

end


Вроде работает но как сделать что бы форматировал выводимый текст и выравнивало и как сделать что бы функция умножения выводилась вот таки вот образом?
Цитата

   325
  *4405
  -----
   1625
     0
 1300
1300
-------
1431625 


Автор: satels 3.12.2009, 20:56
Жаль, что не на python дали - им сразу (по-умолчанию) можно пользоваться как калькулятором. Я на основе этого "свойства" сделал моментально сервис http://kontrolnaya-rabota.ru/s/kalkulyator/

Автор: source777 3.12.2009, 22:11
Цитата(satels @  3.12.2009,  20:56 Найти цитируемый пост)
Жаль, что не на python дали - им сразу (по-умолчанию) можно пользоваться как калькулятором.

Руби в этом плане от Питона ничем не отличается, но задания дают для того, чтобы студенты мозгами пошевелили, а не тупо использовали то, что есть по умолчанию.


satels, а если бы ты ещё и удосужился задание прочитать перед тем как тупо троллить в старой теме, то может быть осознал бы что в данном задании требовался интерактивный калькулятор, а не парсер математических выражений.

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