2月 1日の評価


QUIZ

問1

1や2と答えた人はwhile文がわかっていない。 while文は(for文も)最初に条件判断が行われる。 (つまり一度も本体を実行しないことがある。)

2や4と答えた人は、n----n違いを理解していない。

問2

最も正答率が高かった。(正答 69人)

問3

2や4と間違った人は変数の有効範囲静的変数 の理解が足りないと思われる。1は論外と言わせてもらう。

問4

正答 54人。

問5

正答 49人。慌てなければ答えられるはず。

QUIZ その2

問1

P1(p1x, p1y)が S(sx, sy)と C1(x1, y1)の中点、 P2(p2x, p2y)が C1(x1, y1)と C2(x2, y2)の中点、 P3(p3x, p3y)が C2(x2, y2)と E(ex, ey)の中点、 P4(p4x, p4y)が P1とP2の中点、P5(p5x, p5y)が P2とP3の中点、 P6(p6x, p6y)が P4とP5の中点であるので、イが答となる。

問2

この問題は最も正答率が低かった。(正答21人) 再帰的な分割が終了する条件は、

           CmpLine( sx, sy, x1, y1, len ) && 
           CmpLine( x1, y1, x2, y2, len ) &&
           CmpLine( x2, y2, ex, ey, len ) 

ここで、&&は「〜かつ〜」という意味なので、ア・イ・ウのいずれかである。 ここでCmpLineの定義をみると、

    int  CmpLine( int xs, int ys, int xe, int ye, int len )
    {
      int   len1 = xe - xs ;
      int   len2 = ye - ys ;
      if ( len1 < 0 ) len1 = -len1 ;
      if ( len2 < 0 ) len2 = -len2 ;
      if ( ( len1 < len ) && ( len2 < len ) )
            return  1 ;
      return 0 ;
    }   

len1, len2はそれぞれ、x座標, y座標の差なので、下の図のとおり、ウが答となる。

問3

問2の結果から、関数LineToの描く線分は引数lenを1辺とする正方形の中に含まれる。 つまり、おおまかに言って曲線の長さが長いほど、またlenが小さいほど LineToの呼び出しが多くなることになる。 よって答はアとウとなる。

問4

Linesが0のときの曲線は

DrawCurve(50, 160, 128, 160, 256, 160, 384, 160)
でこれは一本のまっすぐな線である。ここからLinesが増加するにつれ、 中間の点 C1(cx1, cy1)は右上に C2(cx2, cy2)は左下に移動していく。 結果としてエのような図形を描く。

feb01_1.c

feb01_2.c

解答を提出したのは1人だけだった。

戻る


Koji Kagawa(kagawa@eng.〜)