情報科学概論(1年生 & 再履修生)
追試験問題
2005.02.14
Back
to index page for freshmen
Back
to index page for 2nd course
期末試験に関する注意事項をよく読んでおくこと!
解答用紙
- 次のスクリプトの for ループを全て while ループに変更せよ.
(25点)
難易度 ★
for i in 10..13
for j in i..13
for k in 1..j
printf "%3d", i + j + k
end
printf "\n"
end
printf "\n"
end
|
解答例
i = 10
while i <= 13
j = i
while j <= 13
k = 1
while k <= j
printf "%3d", i + j + k
k += 1
end
printf "\n"
j += 1
end
printf "\n"
i += 1
end
|
- 乱数により6桁から15桁の整数を発生させる.このとき,発生させた整数と
その各位の数字を次のように表示するスクリプトを作成せよ.(20点)
難易度 ★★★
Obtained number = 808053058928063
Each digit : 8 0 8 0 5 3 0 5 8 9 2 8 0 6 3
|
解答例
power = rand(10)
num = rand(1000000*10**power) + 1
printf "Obtained number = %d\n", num
printf "Each digit : "
ary = []
i = 0
while num > 0
mod = num % 10
ary[i] = mod
num /= 10
i += 1
end
ans = ary.reverse
for i in 0..ary.size-1
printf "%2d", ans[i]
end
printf "\n"
|
- 1000から1以上100以下の乱数を引く.残った数からさらに繰りかえし1以上
100以下の乱数を発生させて引き続ける.このとき,発生した乱数と差を次
のように表示するスクリプトを作成せよ.(20点)
難易度 ★★★
乱数: 18, 引いた残り: 982
乱数: 100, 引いた残り: 882
乱数: 74, 引いた残り: 808
乱数: 90, 引いた残り: 718
乱数: 24, 引いた残り: 694
乱数: 75, 引いた残り: 619
乱数: 85, 引いた残り: 534
乱数: 46, 引いた残り: 488
乱数: 45, 引いた残り: 443
乱数: 45, 引いた残り: 398
乱数: 20, 引いた残り: 378
乱数: 56, 引いた残り: 322
乱数: 93, 引いた残り: 229
乱数: 84, 引いた残り: 145
乱数: 61, 引いた残り: 84
乱数: 82, 引いた残り: 2
乱数: 37, もう引けません!
|
解答例
org = 1000
while org > 0
num = rand(100) + 1
org -= num
if org >= 0
printf "乱数: %3d, 引いた残り: %4d\n", num, org
else
printf "乱数: %3d, もう引けません!\n", num
end
end
|
- 10000以下の正の乱数 n を発生させる.次に n よりも小さ
い乱数を発生させる.これを繰りかえし行い,発生させた乱数すべてを要
素に持つ配列を生成し,次のように表示するスクリプトを作成せよ.(20点)
難易度 ★★★
[8488, 7046, 1539, 1027, 723, 357, 345, 222, 16, 11, 5, 1, 0]
|
解答例
ary = []
n = 10000
i = 0
while n > 0
ary[i] = rand(n)
n = ary[i]
i += 1
end
p ary
|
- 図1に示すように,xy座標系において中心が(3,3)にある半径2の円を考える.
出発点を点P(5,3)として,サイコロを繰りかえし振ることにより円周上を
反時計回りに回る動きを考える.サイコロの目を3で割った値を中心角と
してその角度(ラジアン)
だけ,一回に進むとし,1周したら終了とする.このとき,移動した経過
について,出たサイコロの目,円周上を進んだ出発点からの累積距離,各
回の原点からの直線距離の3つをを1行に表示するスクリプトを作成せよ.
1周する際にはサイコロの目によって通り過ぎる場合もあるが,通り過ぎ
る場合も終了とする.(15点)
難易度 ★★★★★
図1
数学関数を利用する際には,
を忘れないように.また,円周率πは定数 PI として利用可能.
|
解答例
include Math
theta = 0
path = 0
until theta > 2*PI
dice = rand(6) + 1
step = dice / 3.0
theta += step
x = 2 * cos(theta) + 3
y = 2 * sin(theta) + 3
path += 2 * step
distance = sqrt(x*x + y*y)
printf "サイコロの目: %2d, 進んだ累積距離距離: %5.2f, 原点からの直線距離: %5.2f\n", dice, path, distance
end
|