学校の課題で、入力した文字列をそのまま画面に出力するプログラムを作成するという課題が出ました。
何度でも入力可能とし、"q"を入力すると,文字表示せずに終了するようにすること。 このとき、"quiz" や "quit"などの文字を入力しても終了しないようにする。 という条件なのですが、どうしてもqを含むと終了してしまいます。
ご教授いただけると幸いです。
よろしくお願い致します。
入力した文字列の出力について
Re: 入力した文字列の出力について
条件の意味がよく分かりませんが、「改行文字→q→改行文字」のパターンを見つけたら終了するということでしょうか?
#include<stdio.h>
int main(void)
{
int ch;
int q_flag = 0;
int lf_flag = 0;
while ((ch = getchar()) != EOF)
{
if (q_flag)
{
if (ch == '\n')
break; /* \n→q→\nと来たので、終了する */
else
{
q_flag = 0; /* qの直後に改行文字が来なかったので、通常の状態に戻す */
putchar('q'); /* 出力抑制していたqを出力する */
putchar(ch); /* 今来た文字を出力する */
}
}
else if (lf_flag)
{
if (ch == 'q') /* \n→qと来た */
q_flag = 1; /* qは出力せず、qが来たフラグを立てる */
else
putchar(ch); /* q以外の文字は出力する */
if (ch != '\n') /* 直前の文字が\nではないので、フラグを折る */
lf_flag = 0;
}
else
{
if (ch == '\n') /* \nが来たので、フラグを立てる */
lf_flag = 1;
putchar(ch); /* 文字は常に出力する */
}
}
putchar('\n');
return 0;
}
複雑な問題?マシンの性能を上げてOpenMPで殴ればいい!(死亡フラグ)
Re: 入力した文字列の出力について
条件が分かりづらかったようで大変申し訳ありません。
条件その通りです…。
どうにもうまくいっていなかったので大変助かりました。
ありがとうございます!
条件その通りです…。
どうにもうまくいっていなかったので大変助かりました。
ありがとうございます!
Re: 入力した文字列の出力について
早とちりしていました。行頭に単独の q があるときだけ終了するのですね。かずま さんが書きました:やり方はいろいろあります。