goo blog サービス終了のお知らせ 

kazutomiのブログ

しがないプログラマが日常の話題を載せていきます。

信号機のプログラム

2012年12月10日 00時22分30秒 | 日記
 たまにはプログラムのネタを(笑)

 交差点の信号機のプログラムを設計してみよう。
 交差する道路をそれぞれ信号1と信号2で制御する。それぞれの赤・青・黄の各色の点灯時間が

  信号1:青が3秒、黄が1秒、赤が7秒
  信号2:青が4秒、黄が1秒、赤が6秒

ならば、それを時間軸で考えれば

  時間 1 2 3 4 5 6 7 8 9 10 11 ...
  -------------------------------------------
  信号1 ○ ○ ○ △ × × × × × × × ...
  信号2 × × × × × ○ ○ ○ ○ △ × ...
  (○=青、△=黄、×=赤)

となり、1~11を繰り返せばよいことになる。


 以上をC言語で試作すると次のようになる。

  #include <stdio.h>

  char *color[] = { "青", "黄", "赤" };
  int sig1[] = { 0, 0, 0, 1, 2, 2, 2, 2, 2, 2, 2 };
  int sig2[] = { 2, 2, 2, 2, 2, 0, 0, 0, 0, 1, 2 };

  int main()
  {
    int cnt = 0;

    while (getchar() != EOF) {
      printf("信号1:%s 信号2:%s\n", color[sig1[cnt]], color[sig2[cnt]]);
      if (++cnt >= 11) cnt = 0;
    }

    return 0;
  }

 これを実行してみると下記の結果になり、問題なく動くことがわかる。

  bash$ ./a.out

  信号1:青 信号2:赤

  信号1:青 信号2:赤

  信号1:青 信号2:赤

  信号1:黄 信号2:赤

  信号1:赤 信号2:赤

  信号1:赤 信号2:青

  信号1:赤 信号2:青

  信号1:赤 信号2:青

  信号1:赤 信号2:青

  信号1:赤 信号2:黄

  信号1:赤 信号2:赤

  信号1:青 信号2:赤

最新の画像もっと見る

コメントを投稿

サービス終了に伴い、10月1日にコメント投稿機能を終了させていただく予定です。