Поиск:

Ответ в темуСоздание новой темы Создание опроса
> Помогите сделать калькулятор! пожалуйста! Калькулятор 
:(
    Опции темы
iritschultz
Дата 26.11.2011, 18:08 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Новичок



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

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



Задача: сделать калькулятор, который бы считал сложение, вычитание и умножение. причем умножение в столбик, с промежуточными результатами, и выглядел вот так:
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
-------
14316


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


def interm_res(res_length,num)
  num_length=num.to_s.length
  " "*(res_length-num_length) + num.to_s
end
def read_safe_positive_number(enter_first_number)
end

puts "Enter 1st number:"
x = gets.strip.to_i
while x<= 0
puts "Number must be greater than 0. Please enter it again:"
x = gets.strip.to_i
end



def read_safe_positive_number(enter_second_number)
end
puts "Enter 2nd number:"
y = gets.strip.to_i
while y<= 0
puts "Number must be greater than 0. Please enter it again:"
y = gets.strip.to_i
end

def sum(x,y)
@a= x.to_i+y.to_i
end
def sub(x,y)
@a= x.to_i-y.to_i
end

puts "Enter operation:"
z=gets.strip
 
if z=="+"
  sum(x,y)
end

if z=="-"
  sub(x,y)
end

q = [ x, z, y ].join
result=eval(q)
res_length=result.to_s.length

if z == "*"
   puts interm_res(res_length,x),"*",interm_res(res_length,y),"-"*res_length
  i=0
end
y.to_s.split('').reverse.each do |digit|
     interm = x.to_i*digit.to_i
     puts "#{' '*(res_length.to_i-interm.to_s.length - i)}#{interm.to_s}"
     i+=1
end
puts '-'*res_length


puts result

if z=="+"
  puts sum(x,y)
elsif z=="-"
  puts sub(x,y)
  
  
puts x.to_s.rjust(6)
puts z.rjust(6)
puts y.to_s.rjust(6)
puts "-------".rjust(6)
puts @a.to_s.rjust(6)
end
 
Программа прекрасно считает умножение, выводит промежуточнеы результаты. Но отказывается теперь считать сложение и вычитание. Говорит ошибка из-за ковычек в этом куске:(выделено оранжевым). С ковычками она считает *, но не считает + и -, а без ковычек наоборот. 
f z == "*"
   puts interm_res(res_length,x),"*",interm_res(res_length,y),"-"*res_length
  i=0
end
y.to_s.split('').reverse.each do |digit|
     interm = x.to_i*digit.to_i
     puts "#{' '*(res_length.to_i-interm.to_s.length - i)}#{interm.to_s}"
     i+=1
end
puts '-'*res_length


Подскажите пожалуйста, что делать???


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

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

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


 




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


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

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