#!/uar/bin/env ruby
# -*- coding: utf-8 -*-
puts "計算方法を選択してください"
while true # whileで計算のあとにすぐ選択に戻れるようにする
puts" "
puts "1:加法(足し算)"
puts "2:減法(引き算)"
puts "3:乗法(掛け算)"
puts "4:除法(割り算)"
puts "5:冪乗(xのy乗)"
puts "6:剰余(余り)"
puts "7:平方根(ルート√)"
puts "8:最大公約数、最小公倍数"
puts "9:素因数分解"
puts "10:終了"
print "計算方法を選択:"
houhou = gets.chomp.to_i
if houhou == 1
def tasi(tasareru,tasu,ta)
return tasareru+tasu+ta
end
print "足される数を入力してください:"
suzi1 = gets.to_f
print "足す数を入力してください:"
suzi2 = gets.to_f
print "足す数を入力してください:"
suzi3 = gets.to_f
printf("解答は%fです。\n",tasi(suzi1,suzi2,suzi3))
sleep(1)
redo
elsif houhou == 2
def hikizan(hikareru,hiku,hi)
return hikareru-hiku-hi
end
print "引かれる数を入力してください:"
suzi1 = gets.to_f
print "引く数を入力してください:"
suzi2 = gets.to_f
print "引く数を入力してください:"
suzi3 = gets.to_f
printf("解答は%fです。\n",hikizan(suzi1,suzi2,suzi3))
sleep(1)
redo
elsif houhou == 3
def kake(kakerareru,kakeru,ka)
return kakerareru*kakeru*ka
end
print "かけられる数を入力してください:"
suzi1 = gets.to_f
print "かける数を入力してください:"
suzi2 = gets.to_f
print "かける数を入力してください:"
suzi3 = gets.to_f
printf("解答は%fです。\n",kake(suzi1,suzi2,suzi3))
sleep(1)
redo
elsif houhou == 4
def zyohou(warareru,waru,wa)
if waru < 0 && wa < 0
elsif waru > 0 && wa < 0
elsif waru < 0 && wa > 0
elsif waru > 0 && wa > 0
elsif waru == 0 # 割る数に0を入力したときには0で割れないようにする
puts "0では割れないよ"
end
return warareru/waru/wa
end
print "割られる数を入力してください:"
suzi1 = gets.to_f
print "割る数を入力してください:"
suzi2 = gets.to_f
print "割る数を入力してください:"
suzi3 = gets.to_f
printf("解答は%fです。\n",zyohou(suzi1,suzi2,suzi3))
sleep(1)
redo
elsif houhou == 5
def bekijyou(no,jyou)
return no**jyou
end
puts "xのy乗"
print "xに入る数を入力してください:"
suzi1 = gets.to_f
print "yに入る数(指数)を入力してください:"
suzi2 = gets.to_f
printf("解答は%fです。\n",bekijyou(suzi1,suzi2))
sleep(1)
redo
elsif houhou == 6
def jyouyo(amari,dasu)
if dasu < 0
elsif dasu > 0
elsif dasu == 0
puts "0では割れないよ" # 割る数に0が入力されたときには0で割れないようにする
end
return amari%dasu
end
print "割られる数を入力してください:"
suzi1 = gets.to_f
print "割る数を入力してください:"
suzi2 = gets.to_f
printf("解答は%fです。\n",jyouyo(suzi1,suzi2))
sleep(1)
redo
elsif houhou == 7
def heihoukon(x)
x ** 0.5 # 0.5乗をして平方根を求める
end
print "ルートの中の数を入力してください:"
y = gets.to_f
printf("解答は%fです。\n",heihoukon(y))
sleep(1)
redo
elsif houhou == 8
def kouyaku(a,b)
if a < b
a,b = b,a # 引数aがbよりも小さい場合、aをbに、bをaにそれぞれ代入する
end
while
c = a % b # aをbで割った余りをcに格納する
if c == 0 # 余りがない場合
return b # bを返してループを完了させる
end
a,b = b,c # 処理が続けば、bをaに、cをbに代入する
end
end
print "1つ目の数を入力してください:"
e = gets.to_f
print "2つ目の数を入力してください:"
f = gets.to_f
printf("最大公約数は%fです。\n",kouyaku(e,f))
def koubai(e,f)
return e*f/kouyaku(e,f) # 最小公倍数の取得に最大公約数を使う
end
printf("最小公倍数は%fです。\n",koubai(e,f))
sleep(1)
redo
elsif houhou == 9
print"数を入力してください:"
require 'prime'
x = gets.to_i
print"結果は "
factors = x.prime_division
print factors
print" です。\n"
sleep(1)
redo
elsif houhou == 10
puts "計算を終わります。"
sleep(0.3)
break # breakで計算を終える
else # elseで1から10以外の回答を防ぐ
puts "1から10で答えてください。"
sleep(1)
redo
end
end