Newer
Older
Ruby / dentaku2.rb
@ABE Tessho ABE Tessho on 3 Feb 2023 3 KB 2023-02-03 20:11:42
#!/uar/bin/env ruby
# -*- coding: utf-8 -*-
puts "計算方法を選択してください"
while true                      # whileで計算のあとにすぐ選択に戻れるようにする 
  print" \n1:加法(足し算)\n2:減法(引き算)\n3:乗法(掛け算)\n4:除法(割り算)\n5:冪乗(xのy乗)\n6:最大公約数、最小公倍数\n7:終了\n計算方法を選択:"
  houhou = gets.chomp.to_i
  if houhou == 1                   
    def tasi(tasareru,tasu)
      return tasareru+tasu
    end 
    print "足される数を入力してください:"
    suzi1 = gets.to_f
    print "足す数を入力してください:"
    suzi2 = gets.to_f
    printf("解答は%fです。\n",tasi(suzi1,suzi2))
    sleep(1)
    redo
  elsif houhou == 2
    def hikizan(hikareru,hiku)
      return hikareru-hiku
    end
    print "引かれる数を入力してください:"
    suzi1 = gets.to_f
    print "引く数を入力してください:"
    suzi2 = gets.to_f
    printf("解答は%fです。\n",hikizan(suzi1,suzi2))
    sleep(1)
    redo
  elsif houhou == 3
    def kake(kakerareru,kakeru)
      return kakerareru*kakeru
    end
    print "かけられる数を入力してください:"
    suzi1 = gets.to_f
    print "かける数を入力してください:"
    suzi2 = gets.to_f
    printf("解答は%fです。\n",kake(suzi1,suzi2))
    sleep(1)
    redo
  elsif houhou == 4
    def zyohou(warareru,waru)
      if waru < 0
      elsif waru > 0
      elsif waru == 0             # 割る数に0を入力したときには0で割れないようにする
        puts "0では割れないよ"
      end
      return warareru/waru
    end
    print "割られる数を入力してください:"
    suzi1 = gets.to_f
    print "割る数を入力してください:"
    suzi2 = gets.to_f
    printf("解答は%fです。\n",zyohou(suzi1,suzi2))
    sleep(1)
    redo
  elsif houhou == 5
    def bekijyou(no,jyou)
      return no**jyou
    end
    print "xのy乗\nxに入る数を入力してください:"
    suzi1 = gets.to_f
    print "yに入る数(指数)を入力してください:"
    suzi2 = gets.to_f
    printf("解答は%fです。\n",bekijyou(suzi1,suzi2))
    sleep(1)
    redo
  elsif houhou == 6
    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 == 7            
    puts "計算を終わります"
    sleep(0.3)
    break    # breakで計算を終える
  else                        # elseで1から9以外の回答を防ぐ
    puts "1から7で答えてください。"
    sleep(1)
    redo
  end
end