新しく発言する EXIT インデックスへ
center試験第6問

  center試験 第6問 荒田浩二 2007/01/22 21:27:38 
  DELETED  山中和義  2007/01/23 14:52:33  (削除)
   └情報関係基礎第3問 山中和義 2007/01/23 15:44:49 

  center試験 第6問 荒田浩二 2007/01/22 21:27:38  ツリーへ

center試験 第6問 返事を書く ノートメニュー
荒田浩二 <knrztrhoel> 2007/01/22 21:27:38
 二分法を用いて5の3乗根の近似値を計算するために、次の[プログラム1]を作った。
[プログラム1]
100 LET A=0
110 LET B=2
120 INPUT N
130 FOR I=1 TO N
140 LET C=(A+B)/2
150 LET D=C*C*C-5
160 IF D<0 THEN LET A=C
170 IF D>=0 THEN LET B=C
180 NEXT I
190 PRINT A
200 PRINT B
210 END
以下、小数の形で回答する場合は、指定された桁数の一つ下の桁数を四捨五入し、解答せよ。
途中で割り切れた場合は、指定された桁まで<0>にマークすること。

(1) 変数Nに3を入力したとき、出力される変数Aの値は[ア].[イウ]であり、変数Bの値は[エ].[オカ]である。

(2) 変数Nに5を入力したとき、出力される変数Aと変数Bの値の差B-Aは[キ].[クケコサ]である。

(3) 出力される変数Aと変数Bの値の差B-Aが0.001以下になるようにしたい。
 変数Nに入力すべき整数のうち、最小のものは[シス]である。

(4) 2次方程式x^2-2x-4=0の大きい方の解の近似値を求めるために、[プログラム1]の150行を
 150 LET D=C*C-2*C-4
のように変更し、さらに100行と110行を[セ]のように変更した[プログラム2]を作った。
[セ]に当てはまるものを、次の<0>〜<3>のうちから一つ選べ。
<0>
 100 LET A=0
 110 LET B=1
<1>
 100 LET A=1
 110 LET B=2
<2>
 100 LET A=2
 110 LET B=3
<3>
 100 LET A=3
 110 LET B=4

(5) (4)の[プログラム2]を変更して、2次方程式x^2-2x-4=0の小さい方の解の近似値を求める。
 まず、[プログラム2]の100行と110行を
 100 LET A=-2
 110 LET B=-1
のように変更し、さらに150行から170行に変更を加えることを考える。
 次の変更のうち、Nに入力する値を大きくしてもA,Bの値が解に近づかないものは[ソ]である。
[ソ]に当てはまるものを、次の<0>〜<3>のうちから一つ選べ。
<0>
 150 LET D=C*C-2*C-4
 160 IF D<0 THEN LET B=C
 170 IF D>=0 THEN LET A=C
<1>
 150 LET D=C*C-2*C-4
 160 IF D>0 THEN LET A=C
 170 IF D<=0 THEN LET B=C
<2>
 150 LET D=(C*C-2*C-4)*(B*B-2*B-4)
 160 IF D<0 THEN LET A=C
 170 IF D>=0 THEN LET B=C
<3>
 150 LET D=(C*C-2*C-4)*(A*A-2*A-4)
 160 IF D<0 THEN LET A=C
 170 IF D>=0 THEN LET B=C

  DELETED  山中和義  2007/01/23 14:52:33  (削除) ツリーへ

Re: center試験 第6問 返事を書く
山中和義 <drdlxujciw> 2007/01/23 14:52:33 ** この記事は削除されました

   └情報関係基礎第3問 山中和義 2007/01/23 15:44:49  ツリーへ

Re: DELETED 返事を書く ノートメニュー
山中和義 <drdlxujciw> 2007/01/23 15:44:49
情報関係基礎 第3問

「木構造(2分木)による数式の表現」と「その数式の計算」を、
連鎖による消滅などの落ちゲー(ブロック崩し)をマネて表現している。
ゲーム感覚のアプローチでおもしろい。

数式処理をまじめに解説するより学生ウケするだろう。

http://stepup.yahoo.co.jp/shinro/juken_2006/


DATA "", "", "", "", "","","",""
DATA "", "", "", "", "","","",""
DATA "", "","+","*", "","","",""
DATA "2","*","2","3","4","","",""

!DATA "", "", "", "", "", "","",""
!DATA "", "", "","*", "", "","",""
!DATA "", "","-","3", "", "","",""
!DATA "2","*","2","1","+","2","",""

!DATA "", "", "", "", "","","",""
!DATA "", "","*", "", "","","",""
!DATA "","3","-","*", "","","",""
!DATA "2","*","2","3","4","","",""

DIM t$(8,4) !4行8列のマス目

LET kosuu=0
FOR y=4 TO 1 STEP -1 !データを設定する
FOR x=1 TO 8
READ t$(x,y)
IF t$(x,y)<>"" THEN LET kosuu=kosuu+1
NEXT x
NEXT y
CALL dump(t$)
PRINT


!手順3
!!LET kosuu=7 !最初のブロックの個数
DO
LET keisan=0 !手順1で計算した回数


!手順1 計算可能な組合せを見つけて計算と入れ替えをする手続き
FOR x=2 TO 7
IF isNumber(t$(x-1,1))<0 AND isOperator(t$(x,1))<0 AND isNumber(t$(x+1,1))<0 THEN
IF t$(x,1)="+" THEN
LET t$(x,1)=STR$(VAL(t$(x-1,1))+VAL(t$(x+1,1)))
ELSEIF t$(x,1)="*" THEN
LET t$(x,1)=STR$(VAL(t$(x-1,1))*VAL(t$(x+1,1)))
ELSEIF t$(x,1)="-" THEN
LET t$(x,1)=STR$(VAL(t$(x-1,1))-VAL(t$(x+1,1)))
END IF
LET t$(x-1,1)=""
LET t$(x+1,1)=""

LET keisan=keisan+1
LET kosuu=kosuu-2
END IF
NEXT x
CALL dump(t$)

!手順2 ブロックを下に移動させる手続き
FOR x=1 TO 8
IF t$(x,1)="" THEN !下段のマスが「空」のとき
FOR y=1 TO 3 !すべてのブロックを1マス下へ移動させる
LET t$(x,y)=t$(x,y+1)
NEXT y
LET t$(x,4)=""
END IF
NEXT x
CALL dump(t$)
PRINT

LOOP UNTIL keisan=0
PRINT "kosuu=";kosuu

END

EXTERNAL FUNCTION isNumber(d$) !数ブロックか確認する
LET isNumber=0
WHEN EXCEPTION IN
LET t=VAL(d$)
LET isNumber=-1
USE
END WHEN
END FUNCTION

EXTERNAL FUNCTION isOperator(d$) !演算ブロックか確認する
LET isOperator=0
IF d$="+" OR d$="-" OR d$="*" THEN LET isOperator=-1
END FUNCTION

EXTERNAL SUB dump(t$(,)) !配列Tの内容を表示する
FOR y=4 TO 1 STEP -1
PRINT USING "##:": y;
FOR x=1 TO 8
PRINT USING "[<###]": t$(x,y);
NEXT x
PRINT
NEXT y
PRINT "Y/X";
FOR x=1 TO 8
PRINT USING "##  ": x;
NEXT x
PRINT
END SUB


インデックスへ EXIT
新規発言を反映させるにはブラウザの更新ボタンを押してください。