![]() |
|
![]() ![]() ![]() |
|
iritschultz |
|
|||
Новичок Профиль Группа: Участник Сообщений: 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 Подскажите пожалуйста, что делать??? |
|||
|
||||
![]() ![]() ![]() |
Правила форума "Ruby: Общие вопросы" | |
|
Если Вам понравилась атмосфера форума, заходите к нам чаще! С уважением, source777. |
1 Пользователей читают эту тему (1 Гостей и 0 Скрытых Пользователей) | |
0 Пользователей: | |
« Предыдущая тема | Ruby: Общие вопросы | Следующая тема » |
|
По вопросам размещения рекламы пишите на vladimir(sobaka)vingrad.ru
Отказ от ответственности Powered by Invision Power Board(R) 1.3 © 2003 IPS, Inc. |