解答です。
設問1
ア:4 イ:6 ウ:9 エ:7 オ:8
設問2
6
設問3
a:1 b:32767 c:0
解説してみた。
設問1
<3>または<4>が真であれば<5>に進み、両方とも偽であれば<6>に進みます。よって、アには「4」、イには「6」が入ります。
<6>が真でさらに<7>も真であれば<8>に進んでループを繰り返し(<1>に戻る)、<6>か<7>のどちらかが偽であれば<9>に進んでから、berakでループを抜けます(<11>に進む)。よって、ウには「9」、エには「7」、オには「8」が入ります。
フローグラフのア~オにノード番号を記入したものが、次の図になります。
設問2
フローグラフのノード(N)が11、エッジ(E)が15なので、求めるサイクロマチック数は
S=15-11+2=6
となります。
設問3
<1>が真であるには、a=1である必要があります。よって、aは1になります。
<3>と<4>がともに偽であるためには、bは2でも3でもない必要があります。bは16ビットの2の補数表現の整数なので、最大値は32767になります。よって、考えられるbの最大値は32767。
<6>が偽かつ<7>が真であるためには、c≦0かつc<8を満たす必要があります。これを満たすcで最大のものは0なので、考えられるcの最大値は0となります。
IPAの公式解答はこちら。
平成18年春ソフトウェア開発技術者午後1 IPA公式解答(PDFファイル)
今回は空欄に数値や番号を記入していく解答形式でした。フローグラフを見たのは初めてでしたが、落ち着いて処理の流れを追っていけば何とかなるので、それほど難しくはなかったです。