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$) !手順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$) 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 NEXT y PRINT "Y/X"; FOR x=1 TO 8 PRINT USING "## ": x; NEXT x END SUB |