2019.12.5 解答

1 ... 9点

各問 3点
(1) 0.5

(2) 19.614

(3) 148.330875

(参考) エクセルで作成した、時間、距離、速度の表
セルの書式で、小数点以下2けた表示にした。

Annotation-2019-12-04-103913

BASIC のコードで、エクセル出力に似た表をつくる。そのために、小数点2けたまでに切り捨てる関数をつくると次のようになった。

g=9.807
print " t";chr(9);" d";chr(9);" v"
for t=0 to 3.8 step 0.2
d=1/2*g*t^2
v=g*t
print t;chr(9);cut(d);chr(9);cut(v)
next t

# shosu ten 2 keta, kirisute
function cut(x)
 y=int(100*x)/100
 return y
end function
 t	 d	 v
0	0.0	0.0
0.2	0.19	1.96
0.4	0.78	3.92
0.6	1.76	5.88
0.8	3.13	7.84
1.0	4.9	9.8
1.2	7.06	11.76
1.4	9.61	13.72
1.6	12.55	15.69
1.8	15.88	17.65
2.0	19.61	19.61
2.2	23.73	21.57
2.4	28.24	23.53
2.6	33.14	25.49
2.8	38.44	27.45
3.0	44.13	29.42
3.2	50.21	31.38
3.4	56.68	33.34
3.6	63.54	35.3
3.8	70.8	37.26

しかし結果は、エクセルの出力と違っている。どこに原因があるのだろうか?また、コードを修正することはできるか?

BASIC-256 の 「print 数値」では、出力の書式を指定できないために、自作の関数などが必要になる。

出力の書式設定ができるプログラム言語 Free Pascal で書いた例を示す。

program freeFall;

const
 g = 9.807;

var
 t, d, v: real;

begin
   t:=0;
  while t<4 do
  begin
    d:=1/2*g*t*t;
    v:=g*t;
     writeln(t:10:1,d:10:2,v:10:2);
    t:=t+0.2
  end
end.
       0.0      0.00      0.00
       0.2      0.20      1.96
       0.4      0.78      3.92
       0.6      1.77      5.88
       0.8      3.14      7.85
       1.0      4.90      9.81
       1.2      7.06     11.77
       1.4      9.61     13.73
       1.6     12.55     15.69
       1.8     15.89     17.65
       2.0     19.61     19.61
       2.2     23.73     21.58
       2.4     28.24     23.54
       2.6     33.15     25.50
       2.8     38.44     27.46
       3.0     44.13     29.42
       3.2     50.21     31.38
       3.4     56.68     33.34
       3.6     63.55     35.31
       3.8     70.81     37.27

2 ... 30点

評価のポイント

  • 「自由落下する物体についての式」をもとに、時間、距離、速度を求める。
  • 時間(t)、距離(d)、速度(v)の値は「式 (1),(2)」から計算される。
  • print 式 で出力する。

各問について

  • 正しい式を選んでいれば、2点
  • print 式 が正しければ、2点
  • 結果が正しければ、2点

Annotation-2019-12-02-204413

  1. 20=1/2 * 9.807 * t^2
    t = sqrt(20*2/9.807)

print sqrt(20*2/9.807)
2.02 sec

  1. 25=1/2 * 9.807 * t^2
    t = sqrt(25*2/9.807)

print sqrt(25*2/9.807)
2.258 sec

v = 9.807 * 2.25796348568
= 19.80605967
19.8 m/s

= 22.1438479041

  1. 20 - 2 = 18m
    t = sqrt(18*2/9.807)
    = 1.91594555088

    print t
    1.916 sec

    v = 9.807 * 1.91594555088
    = 18.7896780175

    print v
    18.79 m/s

    18.79 m/s
    18.79 * 60 * 60 = 67,644 m/h
    時速: 67.64 km/h

  2. 14=1/2 * 9.807 * t^2
    t = sqrt(14*2/9.807)

    print sqrt(28/9.807)
    1.69 sec

  3. 1857=1/2 * 9.807 * t^2
    t = sqrt(1857 * 2/9.807)
    print sqrt(1857 * 2/9.807)
    19.46 sec