私は現在基本情報技術者試験を受けるために勉強しています。
勉強の一貫として、過去の試験問題を解いているのですが、
平成18年度午後の問6の問題(↓)が、どうしてもわかりません。
ネットで解説など探したところ、発見はしましたが
どうしてこの答になるのかといったことは結局わかりませんでした。
というのも、この下記の解説は、問題を理解している人が見ればわかるかもしれませんが、
私のように正答を導き出してすらいない者ではついていけないと感じたからです。
もっと詳しい解説がないものかと探したのですが、今のところ見当たりません。
そこで、どなたかこの問題の解説を詳しくしていただける方がいないものかと今回質問をさせていただきました。
どなたかこの問題の解説をしていただけないでしょうか。
問題
http://www.rs.kagu.tus.ac.jp/infoserv/j-siken/H1 …
解説
http://www5f.biglobe.ne.jp/~pafu/kihonweb/kaic/c …
ご回答よろしくお願いいたします。
No.1
- 回答日時:
失礼ながら、逆に教えてください。
「この解説のどこが判らないのでしょうか?」
・ある条件(a)のときに、単純に直線を描画している。 問題文の中に重要なヒントが有る。
・式(b)は解説以上の説明は出来ません。
・問2も問題文の中に重要なヒントが有る。「中央の線分を一辺とする正三角形を始点から終点に向かって左側に作り」
No.2
- 回答日時:
見たことある問題だと思ったらちょうど私が受けたときの問題でした。
平成18年度春ですね。
細かいところですが年度を書くなら一緒に春か秋か書いときましょう。(年2回なのはご存知ですよね?)
ところで、#1の方と同じ補足ですが、どこが分からないのでしょうか?
解説のとおり特に引っ掛けの類もなく素直な問題です。提示されている解説にも特に不適切な箇所は見当たりません。
出題の意味するところが分からないということでしょうか?
(ちょうど私があなたの質問に抱く疑問のように)
幸い問題文は適切です。まずは解説文は置いておいて、問題文を良く読んでください。音読しても良いですし、分からない用語は調べてください。
どこが分からないのかすら分からないとしたら、やはり基礎を一通り勉強しなおすしかないです。あせらずに基礎から積み上げることが大切です。
この回答への補足
1の方、2の方、ご指摘ありがとうございます。
今度からは春期か秋期か書き忘れないように気をつけます。
どこがわからないのかということですが、2の方が仰るとおり、
どこがわからないのかもよくわかっていないような気がします。
お二方のお言葉で、問題文をよく理解できるまで読み込むことからもっとやっていかなければと思いました。
ありがとうございます。
No.3
- 回答日時:
ではまず[解説の解説]から。
>[a]の条件が真であれば、一回で処理を終えている。
プログラムの8~10行のこと。
9行目の[DrawLine( x1, y1, x2, y2 );]は問題文(2)にあるとおり線を引く関数ですから、[a]が真なら★(x1,y1)~(x2,y2)まで線を引いて★この関数は終了します。
>偽であれば処理はさらに分かれていくのだが
>よくみると呼ばれている関数は自分自身である。
プログラムの11~20行のこと。
呼ばれている関数云々は17~20行目です。このKochCurve(・・・)というメソッドはどこかというとプログラムの5~22行目のまさに自分自身に他なりません。
>そのことから[a]の条件で、真であれば処理が終了ということは
>「dim」が繰返し回数が0であることがわかる。
これがちょっと飛躍しているかなと思いました。
解説とは違うのですが、まず回答群にはdimの式しかありません。
dimって何?と問題文を見ていくと問題文(3)に、
dimは[(1) の説明での繰返し回数]と書いてあり、さらに
[0 のとき図1の (1) が描画される。]
とあります。
上の[図1の (1) が描画される。]は
(x1,y1)~(x2,y2)まで線を引く・・・
つまり上で★印で囲んだ処理です。dimが0のとき★印で囲んだ処理を行って終わる。ということからdimが0の時真になる条件が[a]になりそうです。
ただしこの時点ではdimが0の時真になる条件は、ア・イ・オの3つあり絞れません。
次に問題文(4)の[このプログラムを実行すると,図1の (2) に示すような図形が描画される。]に注目します。[このプログラムを実行する]というのはmain関数を実行するのと一緒ですから、プログラム25行目の
KochCurve( 0, 180, 180, 180, 1 );
を実行すると[図1の (2) に示すような図形が描画される。]ということになります。
プログラム5行目を見ると上記はdim=1ですね。
また25行目を
KochCurve( 0, 180, 180, 180, 2 );
に変えると[(3) に示すような図形が描画される]ともあります。このときdim=2です。
さて、材料がそろいました。
dim=0 -> 図1の(1) -> 条件[a]が真
dim=1 -> 図1の(2) -> 条件[a]が偽
dim=2 -> 図1の(3) -> 条件[a]が偽
これを満たす条件[a]はアしかないのです。
イはdim=1の時、真になってしまい、
オはdim=2の時、真になってしまいます。
とりあえず設問1について解説しました。
どうでしょうか?
このほうがわかりやすければまた書きます。
あと参考URLの脱出条件というのを理解すれば、もっと簡単になります。
参考URL:http://ja.wikipedia.org/wiki/%E5%86%8D%E5%B8%B0
設問1だけで、こんなに詳しく解説してくださってありがとうございます。
私がわからないと言った解説は、説明が短すぎて理解ができなかったのではと思います。
できればぜひ次の設問の解説ももお願いしたいと考えております。
よろしくお願いいたします。
脱出条件というものも、勉強してみます。
No.4
- 回答日時:
では設問1[b]を。
提示された解説とは違うのですが。bはプログラム11行目から20行目の処理が何であるのかがわかれば自然に出てきます。
前回の設問1[a]で、dim=0の場合は[a]が真になり、9行目が実行されて終了してしまうことが分かりました。では[a]が偽の時、dim=1について考えます。
前回も書きましたが、問題文(4)からdim=1の時、[図1の (2) に示すような図形が描画される]とあります。
そこで図1の(2)を見てみると、ご丁寧に(x1,y1)~(x5,y5)の5つの点が書かれています。
もう一度プログラムを見ると・・・
11~12行目で(x3,y3)を
13~14行目で(x5,y5)を
15~16行目で(x4,y4)を求めているのがおわかりになると思います。
さらに17行目から20行目で4つのコッホ曲線を描いている。
その4つの曲線とはKochCurve(・・・)の最初の4つの引数から、それぞれ
(x1,y1)-(x3,x3)
(x3,y3)-(x4,x4)
(x4,y4)-(x5,x5)
(x5,y5)-(x2,x2)
つまり図1の(2)の線を左から右へ描いているのがおわかりになりますでしょうか。
では[b]は何になるでしょうか?
図1の(2)では上記の4つの線は直線です。
直線を引いて終わるdimは?そう[a]でやったdim<=0の時です。
これによってdimが1の時、[b]が0以下(b<=0)ということになり、
アかイに絞られます。(ここは提示された解説と同じですね)
アとイの違いは両方とも同じ値(dim-1)を返すが、アは返してからdimにdim-1を代入しているということです。つまり最初がdim=1で仮に[b]がアだとすると17行目(0),18行目(-1),19行目(-2),20行目(-3)となります。
では代入する必要があるのか、ないのか?ということになります。
これは図1の(2)と(3)を見ればわかります。4つのコッホ曲線はおなじ繰り返し回数で描けば良いことは一目瞭然です。特にアでは図1の(3)が描けません。
したがってイが正解となります。
No.5ベストアンサー
- 回答日時:
設問2です。
>よく見ると図2の図形は、図1の(3)の組み合わせであることがわかるだろう。
図2の図形は図1の(3)を4つあわせたものだと気がついたでしょうか。
解答群にもKochCurve(・・・)が4行のものが並んでいますのですぐわかったと思います。
dimは変化がないので、純粋に書き順の問題となります。
先ほどの回答の中で[図1の(2)の線を左から右へ描いている。]と書きました。その時上側に三角が出来ています。
これを問題文中では#1さんの出されているようなヒントで表現しています。
「左から右へ引いたときに上側に三角」「始点から終点へ向かって左側に三角」
と見ていけば4つのコッホ曲線にそれぞれどんな(x1,y1)-(x2,y2)を与えれば良いのかわかると思います。
以上3つの回答を、いささか冗長のような気もしますが、よりイメージしやすい、より処理を追いやすいかと思い、どちらかというと再帰に触れずに書きました。
再帰処理のイメージをつかむと、提示された解説のような導き方もできると思います。
お探しのQ&Aが見つからない時は、教えて!gooで質問しましょう!
似たような質問が見つかりました
- Java 問題作成のWebアプリの作り方を教えてください 1 2022/11/26 22:01
- 情報処理技術者・Microsoft認定資格 応用情報技術者試験の午後問題の過去問の解説 1 2023/01/31 16:32
- 情報処理技術者・Microsoft認定資格 基本情報技術者試験について 基本情報技術者試験の午後問題についてなのですが、 大門①の情報セキュリテ 1 2022/10/30 00:34
- 情報処理技術者・Microsoft認定資格 J検【令和3年度後期 情報システム試験 システムデザインスキル】問題1(2)の解き方を教えてください 1 2022/03/22 18:36
- 大学受験 資格試験などの勉強で過去問題集の解説を理解する時、分からない用語を調べてどうするのが良いですか? 問 3 2023/06/18 17:18
- その他(職業・資格) 至急回答お願いします。 12月初旬に衛生管理者試験を受験します。 そのために、過去問の問題集を購入し 1 2022/10/13 18:33
- 大学受験 大学入試の現代文の勉強をしています。 問題集をまず自分で解き、解答→解説を確認しています。 問題集の 2 2023/05/14 22:41
- 大学受験 お急ぎの質問です。 現在高3受験生です。次の金曜日に明治大学総合数理学部(現象数理科)の学部別試験が 3 2023/02/13 23:38
- 弁護士・行政書士・司法書士・社会保険労務士 宅建等の法律関係の勉強法について 2 2022/06/23 01:10
- 宅地建物取引主任者(宅建) 未経験・知識ゼロからの宅建取引士勉強方法について 2 2022/06/10 14:38
関連するカテゴリからQ&Aを探す
おすすめ情報
デイリーランキングこのカテゴリの人気デイリーQ&Aランキング
-
win32api複数のタイマーを同時...
-
scilabでのグラフ描画時の軸設定
-
C#で壁の当たり判定と自キャラ...
-
ビットマップに描画をしてピク...
-
給紙トレイをダイアログを使わ...
-
C#を用いて描画する四角形の角...
-
画面に絵を出す方法
-
ListBoxで改行したい
-
VB2010にて、プロットエリア...
-
線の描画速度
-
ポリゴン 球体を三角形パッチ...
-
VC++2010 MFC EDIT に格子
-
worksheetFunctionクラスのVloo...
-
VBA シートのボタン名を変更し...
-
ユーザーフォームを表示中にシ...
-
【C#/Java?】try-catchでcatch...
-
エクセルエラー13型が一致しま...
-
ExcelVBAのユーザーフォームの...
-
「Columns("A:C")」の列文字を...
-
VBA(エクセル)で自動的にボタン...
マンスリーランキングこのカテゴリの人気マンスリーQ&Aランキング
-
ListBoxで改行したい
-
for文の実行速度を遅くしたいの...
-
Word 描画オブジェクトを削除...
-
C#を用いて描画する四角形の角...
-
ビットマップに描画をしてピク...
-
PowerPoint の VBA
-
給紙トレイをダイアログを使わ...
-
win32api複数のタイマーを同時...
-
画面に絵を出す方法
-
MFCでのコンボボックスについて
-
.NETのPictureBoxでウインドウ...
-
scilabでのグラフ描画時の軸設定
-
Excel VBA:コントロールボタン...
-
VC;;6.0のMFCで線を簡単に引け...
-
花火のアルゴリズム
-
VB.NETでグラフィックを描くと...
-
水平線の描画
-
Excel 2007で、フリーフォーム描画
-
C# DrawImage 物理サイズでな...
-
円の頂点の求め方を知りたいです。
おすすめ情報