PROG 4.2 配列要素に関する処理

<問題>

aまたはbの文字を最大10回繰り返し入力し、配列に格納する。配列について、各文字の連続は縮約して、画面に表示する。

<入力処理について>
入力の1文字を、文字型配列valuesに格納する。この処理を、aまたはb以外の文字やコントロールzが入力されるまで繰り返す。

<実行結果>

aaabbaabaa (入力)
ababa       (出力)      
aabbc
ab


解答例

#include <stdio.h>

#include 

int main (void) {
   char values[10];
   char value, before;
   int n, i;


   n = 0; /*  最大10個 読む */
   while (n < 10) {
      if(scanf("%c", &value) == EOF)
         break;
      if (value != 'a' && value != 'b')
         break;
      values[n] = value;
      n++;
   }

   /* 配列の中を確かめるなら
   for (i = 0; i < n; i++)
      printf("%c", values[i]);
   printf("\n");
   */

   before = 'c'; /* aでもbでもない、何か */

   for (i = 0; i < n; i++)
      if (before != values[i]) {
         printf("%c", values[i]);
         before = values[i];
      }
   printf("\n");

   return 0;
}