標準入力で2進列の末尾に改行がついたものが与えられる。連続する1の並びの両端をすべて0で置き換えて表示する。
標準入力で2進列の末尾に改行がついたものが与えられる。連続する1の並びの両端をすべて0で置き換えて表示する。 というプログラムを配列を用いないという制約の元で作成しているのですが、連続する1の並びをどう判定 すれば良いか分からずに困っています。ご教授よろしくお願い致します。 例 入力 1000110011101111 出力 00000001000110
C言語関連・49閲覧・250
ベストアンサー
#include <stdbool.h> #include <stdio.h> int main(void) { __int c; __int prev; __bool in_ones = false; __while ((c = getchar()) != EOF){ ____if (c == '1'){ ______if (in_ones){ ________putchar(prev); ______} ______prev = in_ones + '0'; ____} else { ______if (in_ones){ ________putchar('0'); ______} ______putchar(c); ____} ____in_ones = (c == '1'); __} __if (in_ones){ __ putchar('0'); __} __return 0; }
1人がナイス!しています