-1

配列を次のように設定した場合:

test[10] = {1,2,1,3,4,5,6,7,8,3,2}

重複する 1、重複する 2、重複する 3 があるため、3 を返したいのですが、どうすればこれを達成できますか? 効率は関係ありません。

4

4 に答える 4

2

このコードを使用できます。

int main()
{
 int test[10] = {1,2,1,3,4,5,6,7,8,3,2};
 int i,j,dupliCount = 0;
 for (i =0; i<(sizeof(test)/sizeof(int));i++)
  {
  for(j=i+1;j<(sizeof(test)/sizeof(int));j++)
   {
    if (test[i] == test[j])
     {
      ++dupliCount;
      break;
     }
   }
  }
printf("duplicate count %d",dupliCount);
}
于 2013-04-09T04:39:45.463 に答える
1

まず、重複を見つけやすくするために、配列をソートする必要があります。

並べ替え (バブル 並べ替え) の例を次に示します。

void bubbleSort(int numbers[], int array_size) {
    int i, j, temp;

    for (i = (array_size - 1); i > 0; i--) {
        for (j = 1; j <= i; j++) {
            if (numbers[j-1] > numbers[j]) {
                temp = numbers[j-1];
                numbers[j-1] = numbers[j];
                numbers[j] = temp;
            }
        }
    }
}

次に、それをもう一度ループしvalues[i]==values[i+1]

注: for ループを作成するときは、長さを 1 短くして補正values[i+1]し、範囲外にならないようにします。

于 2013-04-09T03:59:11.570 に答える