たまにはプログラムのネタを(笑)
交差点の信号機のプログラムを設計してみよう。
交差する道路をそれぞれ信号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:赤
交差点の信号機のプログラムを設計してみよう。
交差する道路をそれぞれ信号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:赤
※コメント投稿者のブログIDはブログ作成者のみに通知されます