大滝みや子先生のトレーニングブックより(3)

午前試験免除制度対応!基本情報技術者試験のeラーニング【独習ゼミ】
まきさん  
(No.1)
①P152  逆ポーランド法  
解説を一通りみて解答を考えたのですが、
a,bは減算、除算の時には交換法則が使えないと書いてあり。
なのでaはy,bはxとなる。文字書いてあるとこは分かるのですが、
着眼点はどこで問題から何故この根拠は導けるのでしょうか。
(問題から読み取れない・・・・)

②P158  リストの自己再編成探索
解説を一通りみて解答を考えたのですが問題と解答方針が立てれずに困っています。
文字ずらでは分かるのですがどうしたら導けるのですか

解説よろしくお願いいたします。
2023.07.11 11:24
mzcisskさん 
(No.2)
p.152
これまた紛らわしい文になってますが、要は

1.Popは後から入れた文字から出てくる(スタックの原則)
2.逆ポーランド記法でも2つの数字の加減乗除時のオペランドの並び順は変わらない

ということです。

空欄aは計算で後のオペランドになる文字を入れなければなりません。
1.が理由です。
逆に空欄bは前のオペランドになる文字を入れます。
if(k=10)以降の計算ではxが前のオペランド、yが後のオペランドなのだから、空欄aはy、逆に空欄bはxになります。
(つまり、問題を解く上ではif(k=10)以降の処理を先に見るのが必須)

たとえばrpnが{"1","2","-"}であれば、計算は「1-2」にしなければなりません。
2回のPopで数字は2,1の順で出てくるので、これをy,xの順で代入すれば、計算が「1-2」になるわけです。

p.158
確かにこのタイプのリストの参照問題は最初は面食らうと思いますし、ここの解説だけでは分からなくとも仕方ないと思います。
別の本になってしまいますが、翔泳社の『出るとこだけ!基本情報技術者科目B』の第5章
以降をご覧になることを推奨します。
ただ、この本もこの本で、オブジェクト指向が初めてだとさっぱり、更にオブジェクト指向言語の入門書を買う必要が出てくる等、大変なことになる可能性もありますが…。
2023.07.11 19:47
まきさん  
(No.3)
〉mzcisskさん
解説ありがとうございました。
私自身もポーランド法自体はなんとなくは分かっていても問題にされた時に、どう応用していいのか分からなければ得点につながりません。
1回目に一通り通読してみてこんな問題が出来るのだと頭に入れておきます。

〉翔泳社の『出るとこだけ!基本情報技術者科目B』の第5章
以降をご覧になることを推奨します。

その本は持っていませんが、以前に購入したアイテックの科目Bの重点対策で再度根本から掘り下げることをして、演習に入らないといけないと感じました。またパイザラーニングも使いながら実装してイメージが付ければなおよいかと思います
2023.07.11 20:31
まきさん  
(No.4)
すみませんこのスレッドで申し訳ないですが、
P174のプログラムの改良という問題で効率性を上げるために出題されていると思いますが出題の意図が見えないです。SEやPGの方には当たり前の事かもしれませんがどなたか解説をお願い致します。
見る度悩んでしまっていて・・・・。
2023.07.12 20:50
mzcisskさん 
(No.5)
この投稿は投稿者により削除されました。(2023.07.12 21:48)
2023.07.12 21:48
mzcisskさん 
(No.6)
すいません誤りがあったので投稿しなおします。

例題のプログラムも正答のイのプログラムもif文でx[r,c]を関数sub(r)からの返り値と比較・代入する回数自体は同じです。
しかし、例題のプログラムの場合はif文での比較をする度に、更にその直後の文での代入をする度に関数subを呼び出す為、非常に関数subの呼び出し回数が多くなります。

仮にrMaxが5でcMaxが4、更にx[r,c]>sub(r)の比較が毎回真になると仮定した場合、例題文では関数subの呼び出し回数はrMaxのループ数5回×cMaxのループ数4回×(if文での比較1回+代入1回)で40回にもなります。関数subの処理が1回10秒かかるとすれば、合計で400秒もかかります。
それに対し正答イであれば関数subの呼び出し回数はrMaxのループ回数5回だけで済みます。関数subの合計処理時間も50秒で済むわけです。
2023.07.12 21:59
まきさん  
(No.7)
>mzcisskさん
丁寧な解説ありがとうございました。概要はそう言った背景があるんだと分かりました。

この問題で2つほど質問があります。
例題
①S1←sub(r)の位置。他のページを見ると、外側のfor文の外にあるのに
行番号1に代入文が入るのに行番号3に代入しているのが不明です。欄外にfor文内でrの値を変更することはありませんと謳われるのにどうしてですか
②選択肢のウとエにある
行番号4  xrc←x(r,c)
行番号5  if(xrc>s1)
行番号6  xrc←S1

xrcは代入しただけの変数のなのでS1の値を変更することが出来ないとあるのですが
例えば  r=4 c=5 S1=10とした時に
行番号4  20x←x(4、5)
行番号5  if(20x>10)
行番号6  20x←10

という意味不明なことをするということですか
③イの選択肢で
行番号5  if(x[r,c]>s1) ここのS1も比較だけされているから呼び出しではない
行番号6  x[r,c]←S1 ここで呼び出しするから1回となるのですか
  
2023.07.13 11:13
まきさん  
(No.8)
すみません質問がもう1つあります。
P178からの複合条件なのですが(同じ問題が福嶋本にもあります)
1,テストケース①でa<10の時点で真である。だからb<20は評価しない
同様にc>10 偽の時だからd>10は評価しない
a  b  c  d    a <10 真    b評価しない
9 19 10 10    c <10 偽    d評価しない

2,テストケース②
a   b   c   d
10  20  11  11 a<10 偽    評価する
               b<20 偽    評価する
               c>10 真    評価する
               d>10 真    評価する

ということからすべて正解の単独条件が評価すると書いてありますが

テストケース①とテストケース2の違いが分かりません。
この問題の単独条件とはどのような意味を成しているのすか。
            
2023.07.13 15:49

返信投稿用フォーム

スパム防止のためにスレッド作成日から30日経過したスレッドへの書込みはできません。

その他のスレッド


Pagetop