この人頭いいなと思ったエピソード

配列mousの各要素を配列tousと照らし合わせ、マッチしたら変数countにインクリメントし、何回マッチングしたかを返す関数を作りました。
でも、なぜか1回しかインクリメントしてくれません。
確認のため試しにcount++部分をputf("テスト表示")に置き換えた場合マッチングした回数だけ「テスト表示」表示されました。
じゃあなぜ、変数countは一回しかインクリメントされないのでしょうか?

#include <stdio.h>

int DataMatch(int *, int *);

void main()
{
int mous[6] = { 1, 15, 12, 23, 33, 42};
int tous[7] = {10, 15, 19, 23, 33, 42, 11};
int test;

test = DataMatch(mous, tous);

printf("%d%\n", test);
}

//////////////////////////////////////////////////
int DataMatch(int *buffer1, int *buffer2)
{
int i, j, count;

for(i = 0; i < 6 ; i++ ){
for(count = 0, j = 0; j < 6; j++){
if(buffer1[i] == buffer2[j]){

count++;//インクリメントしてくれない!

break;
}
}
}

return count;
}

A 回答 (2件)

count=0 は、iのループの内側に書いてありますから、iが増えるたびに0になります。



ですから、iが0から順に増えていって5になるまでの間に、countは毎回 0 に戻ります。

そのため、iの6回目のループで i=5 のとき、mous[5]とtous[5]の両者が42でマッチしたときの1回だけを数えています。
    • good
    • 0
この回答へのお礼

for文の落とし穴にはまっていたようです。
ありがとうございました。

お礼日時:2005/09/24 01:03

for(count = 0, j = 0; j < 6; j++){


  ~~~~~~~~~~
for分でcountを初期化しているからですよ
    • good
    • 0
この回答へのお礼

for文の落とし穴にはまっていたようです。
ありがとうございました。

お礼日時:2005/09/24 01:04

お探しのQ&Aが見つからない時は、教えて!gooで質問しましょう!


おすすめ情報