擬似言語 part 3の解答

記事
IT・テクノロジー

問1

1.png

2.png

このRANGEというプログラムは、
・AVERAGE(平均を求める)
・SEARCH(学生の点数が範囲の中に含まれる学生数を数える)
の2つの関数を持っています。関数SEARCHを呼び出すときに、配列EIGOと学生の人数の50、そして(a)を渡しています。SEARCH関数の3つ目の引数は「整数型:AVG」ですので、英語の平均点を渡してあげれば良いです。変数AVG-Eには、AVERAGE関数で計算した英語の平均点が設定されますので、これを渡すことになります。(a)は
AVG-E
が正解です。

続いて(b)は、関数AVERAGEで平均点を返す前に行う処理です。これは平均点を計算する部分ですので、合計の点数を学生の人数で割れば、平均点になります。ですので、
AVG ← TOTAL / N
が正解です。ちなみに「■I=0, I<N, 1」は、「変数Iは0から始まり、N未満の間、繰り返す。その間は変数Iを1ずつ増やす。」という意味ですので、覚えておきましょう。

最後の(c)ですが、問題文から平均点±10点の範囲に入っていれば、人数をカウントすると読み取れます。その判定条件を書くことになります。(c)は
AVG ー 10 ≦ TBL[I] and TBL[I] ≦ AVG + 10
が正解です。「平均点の-10点以上であり、かつ、平均点の+10点以内」かどうかを判定して、条件に合致すれば人数をカウントするようにします。


問2

3.png

問題文には、下記のようなイメージで配列OUTへ文字を出力するとあります。

4.png


ABCABCAの文字列からCAが出力されず、配列OUTにABBと出力されます。まずは、配列の添字はどの変数を使っているのかを調べます。変数IがLーMの間は繰り返すとのことですので、配列TEXTの文字を1字ずつ調べているのだろうと仮定します。すると配列TEXTの添字は変数Iを使うのだろうと推測できます。ここで(a)を見てみましょう。配列TEXTと配列PTNの文字が一致するかどうかを、この(a)で調べています。条件に合致した場合は変数Pを+1していますので、配列PTNの添字は変数Pを使用しているのだろうと推測できます。(a)は
TEXT[WK] = PTN[P]
が正解です。変数WKは、最初に変数Iの値が設定されてから繰り返し+1されますので、配列TEXTの添字に使用する変数です。

続いて(b)は、P<Mの条件に合致したときの処理です。これは、文字が一致しなかったので、繰り返しが途中で終わり、PがMより少なかったことを表します。文字が一致しない場合は、配列OUTに配列TEXT内の文字を設定する必要がありますので、(b)にその処理を記述します。
OUT[J] ← TEXT[I]
が正解です。配列OUTに1文字を設定した後、添字を+1して次の配列OUTに文字を設定することになりますので、プログラムでは変数Jと変数Iを+1しているのです。

最後の(c)は、P<Mではなかった場合の処理になります。これは文字が一致した場合のことを表しています。上記イメージのように配列PTNのCAは配列OUTに出力しないので、次の文字から引き続き一致するかどうかを調べる必要があります。CAの2文字分が一致すると、配列TEXTから2文字を読み飛ばして良いことになります。変数Iが2のときの配列TEXTはCですので、ここから2文字分(配列PTNの長さの分)を読み飛ばします。(c)は
I ← I + M
が正解です。変数Iが2のとき、変数WKに変数Iが設定されてこちらも2になります。そこから変数WKを+1して文字が一致するかどうかを調べている間は、変数Iはずっと2のままです。そして、一致した文字数の分だけ、変数Iを増やす(+Mする)ことで、添字が4の位置から再び配列TEXTの文字を調べていくことになるのです。
サービス数40万件のスキルマーケット、あなたにぴったりのサービスを探す