forked from Ada-C12/calculator
-
Notifications
You must be signed in to change notification settings - Fork 0
/
calculator.rb
67 lines (57 loc) · 1.36 KB
/
calculator.rb
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
# Calculator Program
# Get Integer Method
def get_integer(word)
print "Enter a #{word} number, non-numeric values will evaluate to 0: "
int = gets.to_f
# while int == 0
# print "Invalid Entry. Please enter a number: "
# int = gets.to_f
# end
return int
end
# Introduction
puts "Welcome to the calculator program! Here are the available operators: "
operations =
{
"add" => '+',
"subtract" => '-',
"multiply" => '*',
"divide" => '/',
"exponent" => '**',
"modulo" => '%'
}
# List Choices
operations.each do |key,value|
print " #{key} (#{value})"
puts
end
# Get operator from user
print "Which operator would you like to use: "
input = gets.chomp.downcase
check1 = operations.include? input
check2 = operations.has_value? input
if check1 == true
operation = operations[input]
else
operation = input
end
# Validate proper entry
until check1 == true || check2 == true do
print "Invalid Input, Enter operator: "
input = gets.chomp.downcase
operation = operations[input]
check1 = operations.include? input
check2 = operations.has_value? input
if check1 == true
operation = operations[input]
else
operation = input
end
end
# Get integers from user
int1 = get_integer("first")
int2 = get_integer("second")
# Evaluate and print answer
calculation = "#{int1} #{operation} #{int2}"
print "#{calculation} = "
puts eval(calculation)