読者です 読者をやめる 読者になる 読者になる

個人的自由ノート

ふと自分が気になった事を書いてます

問題を解く

OCaml,まだ再帰処理等の繰り返し文を使わずにやってみました。もう少し柔軟に出来るのかなと思ったら意外と融通ききませんね…。let式、if式、リストまで。変数の入れ替えが大変困難でしたので、リストを使ってソートしてみました。ソートのプログラムも自作出来るようになったら良いのになぁ…。

# coding: utf-8
puts "整数を加算します。"
print "何個加算しますか : "
n = gets.chomp.to_i
sum = 0
i = 0
for num in 1..n do
  print "整数(0で終了) : "
  tmp = gets.chomp.to_i
  if tmp == 0 then
    break
  end
  sum += tmp
  i = num
end

puts "合計は#{sum}です。"
puts "平均は#{sum / i}です。"



# coding: utf-8
puts "整数を加算します。"
print "何個加算しますか : "
n = gets.chomp.to_i
sum = 0
i = 0
for num in 1..n do
  print "整数 : "
  tmp = gets.chomp.to_i
  if sum + tmp > 1000 then
    puts "合計が1000を超えました。"
    puts "最後の数値は無視します。"
    break
  end
  sum += tmp
  i += 1
end

puts "合計は#{sum}です。"
puts "平均は#{sum / i}です。"




# coding: utf-8
puts "整数を加算します。"
print "何個加算しますか : "
n = gets.chomp.to_i
i = 0
sum = 0

for num in 1..n do
  print "整数 : "
  tmp = gets.chomp.to_i
  if tmp < 0 then
    puts "負の数は加算しません。"
    next
  end
  sum += tmp
  i += 1
end

puts "合計は#{sum}です。"
puts "平均は#{sum / i}です。"
print_string "整数A : ";;
let a = read_int();;
print_string "整数B : ";;
let b = read_int();;

let diff = if a > b
           then a - b
           else b - a in
    if diff <= 10
    then print_string "それらの差は10以下です。\n"
    else print_string "それらの差は11以上です。\n";;



print_string "整数a : ";;
let a = read_int();;
print_string "整数b : ";;
let b = read_int();;
print_string "整数c : ";;
let c = read_int();;

let min = a
let min = if min < b then min else b
let min = if min < c then min else c;;

print_string("最小値は" ^ string_of_int(min) ^ "です。\n");;




print_string "整数a : ";;
let a = read_int();;
print_string "整数b : ";;
let b = read_int();;
print_string "整数c : ";;
let c = read_int();;

let mid = if a <= b && b <= c || c <= b && b <= a then b
          else if b <= a && a <= c || c <= a && a <= b then a
          else c;;

print_string("中央値は" ^ string_of_int(mid) ^ "です。\n");;




print_string "整数a : ";;
let a = read_int();;
print_string "整数b : ";;
let b = read_int()
      
let min = if a < b then a else b
let max = if a > b then a else b;;

if min == max then
  print_string("二つの値は同じです。")
else
  print_string("小さい方の値は" ^ string_of_int(min) ^ "です。\n");
print_string("大きい方の値は" ^ string_of_int(max) ^ "です。\n");;




print_string "変数a : ";;
let a = read_int();;
print_string "変数b : ";;
let b = read_int();;

let answer = [a; b];;
let answer = List.sort (fun x y -> - compare x y) answer;;

print_string("変数aは" ^ string_of_int(List.nth answer 0) ^ "です。\n");;
print_string("変数bは" ^ string_of_int(List.nth answer 1) ^ "です。\n");;