У меня есть заданный массив, и мне нужно определить, как найти количество дубликатов в нем. Я должен сделать это с помощью вложенных циклов и не использовать векторы. Я пробовал это до сих пор, и я получаю 3, но ответ должен быть 2, поскольку повторяются только цифры 4 и 7. Я понимаю, почему я получаю 3, так как он проверяет 4 раза два, но я не могу понять, как настроить его, чтобы он никогда не проверял еще 4, как только он нашел совпадение.Как найти количество дубликатов в массиве?
#include <iostream>
using namespace std;
int main() {
const int num_elements = 12;
int numbers[num_elements] = { 2, 6, 7, 4, 5, 4, 1, 8, 9, 0, 7, 4 };
unsigned int numduplicates = 0;
for(int i = 0; i < num_elements; ++i){
int oneCounterMax = 0;
for(int j = i + 1; j < num_elements; ++j) {
if((numbers[i] == numbers[j]) && (oneCounterMax < 1)) {
++numduplicates;
++oneCounterMax;
}
}
}
cout << numduplicates << endl;
}
Вы можете отсортировать массив вас первый, а затем код, чтобы пропустить проверенные номера легко. – Jarod42
Я считаю, что мне разрешено сортировать массив. В этом случае я бы получил {0,1,2,4,4,4,5,6,7,7,8,9}, но его пропустил следующий номер проверенной цифры, который у меня застрял – ernie
Вы найдете 3, потому что вы не проверяйте, подсчитано ли текущее число как дублирующее: первые 4, вы найдете дубликат, а второй тоже. Вы должны проверить, нет ли текущего числа в начале массива. Если это так, это уже считается дубликатом, поэтому не нужно продолжать, вы можете перейти к следующему номеру – Garf365