プロが教えるわが家の防犯対策術!

平成18年 秋期 基本情報技術者 午後 問03について教えてください><
この問題を今度授業で解説しなければならなくなったのですがどのように解説したらいいかわからず、さらには答えまでわからない始末・・・;;
誰かこんな私に解説をよろしくお願いいたします!
■問題ページ
http://www.jitec.ipa.go.jp/1_04hanni_sukiru/mond …
P9~11
■解答
http://www.jitec.ipa.go.jp/1_04hanni_sukiru/mond …


よろしくおねがいします!!

A 回答 (1件)

こちらの質問もそうなんですが、


http://okwave.jp/qa/q7642758.html

どちらの問題も、元になる「演算式の解放」をきっちりと理解
していれば、それほど難しい問題じゃないです。つか、こっち
の方は、かなりの「サービス問題」じゃないかと思うんです
けどね。そんなに難しいですか?

要は「先頭の項目を合わせて各項目ごとに引き算してるだけ」
って原理が分かればオッケー。いわゆる問題の「穴」もこの
考え方を理解できていれば、プログラムが読めなくても簡単に
正解が導けます。

例えば(a)ですが、どう考えてもここのループは「各項目すべて」
をナメる処理ですから、必ず添え字はダイナミックに動く筈。

だとすると変数「K」がからまないと嘘ですから、イかウしか
あり得ない。で、片方が「1」だと、pivotとなる項目は先頭項目
から動かなくなるので、そんなことはあり得ない・・・と、プログラム
を読まなくても、自動的に答えが判ります。

(b)(c)も同様で、こちらも最終項の計算をしたら、それを順次代入
するだけ。ループは外側が「式」をナメる、内側が「項目」をナメる
ことは、プログラムのお約束としてアタリマエ。だとすると、(b)は
ア、イ、(c)はウ、エ、オのどれかです。

ここで、(b)は例示から見て「後ろの項目からロールバックしてる」
から、前から処理するアではありえない、(c)も、ループ初期の
処理では、1からn-1までなんて、全項目ナメることもあり得ない
から、エではない・・・と、ここまで判ってしまいます。

さすがに(c)がウ、オのどっちかは、ちゃんとプログラムを読まないと
判りませんが、えーい、の世界では「項目は後ろから処理してる筈
なので、後ろ半分をなめるオかな・・・」と想像はつきます。

あとは、ここまで式を充てて、実際の例示のデータを突っ込んで
机上デバックしてみれば簡単に正解が判ります。

この手の問題は、まずは「演算式が何をやってるか」を概略でいい
から掴むことが解法の始まりです。これが出来ないと問題は解け
ませんが、これが分かればプログラムが読めなくても解ける場合が
数多くありますよ。
    • good
    • 0

お探しのQ&Aが見つからない時は、教えて!gooで質問しましょう!