答えの実行結果と同じようになりません。どうしたらいいか教えてください

ひろゆき
記事: 0
登録日時: 14年前
住所: 大阪市

答えの実行結果と同じようになりません。どうしたらいいか教えてください

投稿記事 by ひろゆき » 14年前

10個の整数を入力し、その入力整数の並びを、「整数」とその整数が「連続する個数」の組に変形して出力するプログラムを作成しなさい。
以下のような実行結果になるようにプログラムせよと出たんですが
ST-PC273L % ./rlen.exe
99 99 99 99 99 99 99 99 99 99
99 10
ST-PC273L % ./rlen.exe
128
128
128
128
128
72
128 5
72
72
235
72 3
235
235 2
ST-PC273L % ./rlen.exe
10 20 30 40 50 60 70 80 90 100
10 1
20 1
30 1
40 1
50 1
60 1
70 1
80 1
90 1
100 1
ST-PC273L % ./rlen.exe
255
255
255
255
255
255
255
255
100
255 8
255
100 1
255 1

どうしても僕の考えたプログラムでは以下のようになるんです
ST-PC273L % ./rlen.exe
99 99 99 99 99 99 99 99 99 99
99 10
ST-PC273L % ./rlen.exe
128
128
128
128
128
72
128 5
72
72
235
72 3
235
235 2
ST-PC273L % ./rlen.exe
10 20 30 40 50 60 70 80 90 100
10 1
20 1
30 1
40 1
50 1
60 1
70 1
80 1
90 1
90 1
ST-PC273L % ./rlen.exe
255
255
255
255
255
255
255
255
100
255 8
255
100 1
100 1
下から2つの実行結果の一番下の数字が答え通りにならないんです。
どうしたらできますか?
僕の考えたプログラムは、以下に書いている奴なんですがどうしたらいいんでしょうか?
教えてくれませんか。お願いします。
#include

int main(void){

int a, i, last;
int count = 0;
int flag = 0;

scanf("%d", &a);

for(i = 1; i < 10; i++){
last = a;
count++;
scanf("%d", &a);
if(a == last){
flag = 1;
}

else{
printf("%d %d\n", last, count);
count = 0;
}
}

count = count + 1;
printf("%d %d\n", last, count);

return 0;
}
最後に編集したユーザー ひろゆき on 2010年10月20日(水) 20:17 [ 編集 1 回目 ]

アバター
tana
記事: 33
登録日時: 15年前

Re: 答えの実行結果と同じようになりません。どうしたらいいか教えてください

投稿記事 by tana » 14年前

お初です。日記を見させて頂きました。
おそらくこれで動くと思われます。

CODE:

#include  

int main(void){ 

 int a, i, last; 
 int count = 0; 
 int flag = 0; 

 scanf("%d", &a); 
 last = a; 

 for(i = 1; i < 10; i++){ 
   count++; 
   scanf("%d", &a); 
   if(a == last){ 
      flag = 1; 
   }else{ 
      printf("%d %d\n", last, count); 
      count = 0; 
   }
   last = a; 
 } 

 count = count + 1; 
 printf("%d %d\n", last, count); 

 return 0; 
}
一行削除して、二行追加しただけなので見比べて貰えればどこが変わったのかわかると思います。
一応、どうしてこうなるのかは考えて見てくださるとご自身のためになると思われます。