[C/C++]バッファが三つのキューを作ろう。
兄「バッファが三つのキューを作れって?何に使うの?」
妹「学校の課題なんだよ」
兄「じゃあ、以前、リングバッファとは何かというのを話したから、そのリングバッファを使ったCのプログラムとqueueを使ったコードの二つを紹介するね」
兄「どちらも動作的には、キューが三つ以上になるまで取り込み、表示させるようになっているよ」
妹「あと、Zを入力したらバッファを全部出力できるようにならないかな?」
兄「その場合はIf判定を加えればいいね」
//youwaka.net *** (pσ_σ)q
#include <iostream>
#include "queue"
//youwaka.net *** (pσ_σ)q
//char
int main()
{
int idx = 0, i = 0;
char buf[3];
memset(buf, 0x00, sizeof(buf));
while (1)
{
char m = getchar();
if (m != '\n') {
if (buf[i] != 0x00) {
printf("ring queから取り出しました。%c\n", buf[i]);
buf[i] = m;
}
else {
buf[i] = m;
}
if (m == 'Z')
{
while (buf[(i + 1) % 3] != 0)
{
i = (i + 1) % 3;
if(buf[i]!=0x00) printf("ring queから取り出しました。%c\n", buf[i]);
buf[i] = 0x00;
}
}
i = (i + 1) % 3;
}
}
}
//queue
int main2()
{
queue<char> m_que;
while (1)
{
char m = getchar();
if (m != '\n')
{
m_que.push(m);
if (m_que.size() > 3) {
printf("queから取り出しました。%c\n", m_que.front());
m_que.pop();
}
if (m == 'Z')
{
while (m_que.size() != 0)
{
printf("queから取り出しました。%c\n", m_que.front());
m_que.pop();
}
}
}
}
}
妹「これで課題ができるよ、お兄ちゃん!でも、なんでこんなテーマにしたの?」
兄「どこかの課題がこれみたいだから、答え合わせに書いとけばブログが伸びるかなぁ、と」
妹「伸びるといいね、お兄ちゃん!」
ディスカッション
コメント一覧
まだ、コメントがありません