Поиск:

Закрытая темаСоздание новой темы Создание опроса
> Калькулятор, Как сделать такой калькулятор? 
:(
    Опции темы
iskan1188
Дата 1.11.2009, 01:16 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Новичок



Профиль
Группа: Участник
Сообщений: 4
Регистрация: 1.11.2009

Репутация: нет
Всего: нет



Помогите, пожалуйста. Начали в колледже изучать  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


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

Это сообщение отредактировал(а) iskan1188 - 1.11.2009, 01:22
PM MAIL   Вверх
source777
Дата 1.11.2009, 18:20 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Эксперт
***


Профиль
Группа: Завсегдатай
Сообщений: 1878
Регистрация: 12.3.2007

Репутация: 6
Всего: 56



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

Это зачем? Ты ведь тут знак действия вводишь, след. to_i будет всегда давать 0.
Вместо этого сохрани сам знак действия, а потом читай про case, чтобы понять как в зависимости от введённого знака выполнить разные действия.


--------------------
Если бы программистам платили за то, чтобы убирать код из программы вместо того, чтобы добавлять его, программы были бы намного лучше © Николас Негропонте
PM MAIL   Вверх
shine
Дата 2.11.2009, 11:11 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Шустрый
*


Профиль
Группа: Участник
Сообщений: 137
Регистрация: 20.10.2006

Репутация: 3
Всего: 5



[QUOTE=source777,1.11.2009,  18:20]
Цитата(iskan1188 @  1.11.2009,  01:16 Найти цитируемый пост)
а потом читай про case

или про eval
--------------------
An investment in knowledge always pays the best interest. © Benjamin Franklin
PM MAIL   Вверх
source777
Дата 2.11.2009, 11:13 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Эксперт
***


Профиль
Группа: Завсегдатай
Сообщений: 1878
Регистрация: 12.3.2007

Репутация: 6
Всего: 56



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

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


--------------------
Если бы программистам платили за то, чтобы убирать код из программы вместо того, чтобы добавлять его, программы были бы намного лучше © Николас Негропонте
PM MAIL   Вверх
iskan1188
Дата 3.11.2009, 00:11 (ссылка)    | (голосов:1) Загрузка ... Загрузка ... Быстрая цитата Цитата


Новичок



Профиль
Группа: Участник
Сообщений: 4
Регистрация: 1.11.2009

Репутация: нет
Всего: нет



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

Цитата

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



Но почему-то тоже не работает, почему пока не понял, может, кто может подсказать, где ошибка или что добавить или изменить? 
PM MAIL   Вверх
source777
Дата 3.11.2009, 00:14 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Эксперт
***


Профиль
Группа: Завсегдатай
Сообщений: 1878
Регистрация: 12.3.2007

Репутация: 6
Всего: 56



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

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


--------------------
Если бы программистам платили за то, чтобы убирать код из программы вместо того, чтобы добавлять его, программы были бы намного лучше © Николас Негропонте
PM MAIL   Вверх
iskan1188
Дата 3.11.2009, 00:17 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Новичок



Профиль
Группа: Участник
Сообщений: 4
Регистрация: 1.11.2009

Репутация: нет
Всего: нет



Ссилку CASE? Читаю, но пока не везжаю :(

Это сообщение отредактировал(а) iskan1188 - 3.11.2009, 00:20
PM MAIL   Вверх
iskan1188
Дата 3.11.2009, 01:49 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Новичок



Профиль
Группа: Участник
Сообщений: 4
Регистрация: 1.11.2009

Репутация: нет
Всего: нет



Думал-думал, сделал вот так вот:

Цитата

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 


PM MAIL   Вверх
satels
  Дата 3.12.2009, 20:56 (ссылка)    | (голосов:1) Загрузка ... Загрузка ... Быстрая цитата Цитата


Новичок



Профиль
Группа: Участник
Сообщений: 4
Регистрация: 29.12.2008

Репутация: нет
Всего: нет



Жаль, что не на python дали - им сразу (по-умолчанию) можно пользоваться как калькулятором. Я на основе этого "свойства" сделал моментально сервис калькулятор онлайн

Это сообщение отредактировал(а) satels - 3.12.2009, 21:00
PM MAIL WWW ICQ GTalk   Вверх
source777
Дата 3.12.2009, 22:11 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Эксперт
***


Профиль
Группа: Завсегдатай
Сообщений: 1878
Регистрация: 12.3.2007

Репутация: 6
Всего: 56



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

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


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


--------------------
Если бы программистам платили за то, чтобы убирать код из программы вместо того, чтобы добавлять его, программы были бы намного лучше © Николас Негропонте
PM MAIL   Вверх
  
Закрытая темаСоздание новой темы Создание опроса
Правила форума "Ruby: Общие вопросы"
source777
  • С чего начать? начинаем
  • Ссылки на полезные ресурсы смотрим тут
  • Обязательно следуйте правилам Vingrad.
  • Пожалуйста, прочитайте рекомендации по работе в форуме и навигации по Vingrad.
  • Для вставки кодов Ruby используйте тег: [code=ruby]код[/code]. Когда в будущем подсветка синтаксиса для Ruby будет реализована, весь исходных код преобразится.
  • Используйтe чекбокс "Транслит" (возле кнопок кодов), если у Вас нет русских шрифтов.
  • Помните, для каждого вопроса должна быть своя тема.

Если Вам понравилась атмосфера форума, заходите к нам чаще! С уважением, source777.

 
1 Пользователей читают эту тему (1 Гостей и 0 Скрытых Пользователей)
0 Пользователей:
« Предыдущая тема | Ruby: Общие вопросы | Следующая тема »


 




[ Время генерации скрипта: 0.0917 ]   [ Использовано запросов: 21 ]   [ GZIP включён ]


Реклама на сайте     Информационное спонсорство

 
По вопросам размещения рекламы пишите на vladimir(sobaka)vingrad.ru
Отказ от ответственности     Powered by Invision Power Board(R) 1.3 © 2003  IPS, Inc.