基本情報23年 特別 午後 問9 設問1−1

【解き方】

設問1

まず、
if ( (hall[row][no].seat_class〜
 のIF文で、空席かどうかチェックしている。

そのあとのif(++cnt >= num)
 で、人数分あったかなかったかをみて、
  aは、あったとき、
  bはなかったとき

をみている。



<<aについて>>

ずっと下のIF文で
if ( found!=0)ときいて、見つかった値をセットしているので、
みつかったら、foundを1にしないと、いけないことがわかる。
なので、aはfound=1


<<bについて>>
 では、bはfound=0?と考えると、そんな単純なもんじゃない。
 found=0は初期化されたときにやっている。
 だから、ここでそれをやる必要がない。

 こういうときは、具体的に考える。
 たとえば、5人連続席を取りたかったとき、
   3人までOKで4人目のときNG、
   そのあと2人おいて、また3人あいている

 はじめの3人までOKの時点で、cntがあがっている。
 このとき、cntを0にしないで先に進んでしまうと、
 そのあと2人おいたときも、cntは値を保持、
 2度目の3人空いているときは、前に数えたつづきからcntを数えるから、
 結果、席がとれることになってしまう

 そこでbに、cnt=0をいれて、クリアしないといけない。

【答え】
a オ
b ア