Нахождение наибольшего вхождения цифры в массиве целых чисел

Мне нужен совет по заданию, который просит написать функцию, чтобы найти четную цифру, которая имеет наибольшее / наименьшее вхождение.

Мой вывод должен выглядеть так:

How many integers (to be worked on) ? 2
Enter integer #1: 1230476
Enter integer #2: 10034850

Occurrence of all existing digits --
Digit 0 : 4
Digit 1 : 2
Digit 2 : 1
Digit 3 : 2
Digit 4 : 2
Digit 5 : 1
Digit 6 : 1
Digit 7 : 1
Digit 8 : 1
Digit 9 : 0
Occurence of all existing EVEN digits --
Digit 0 : 4
Digit 2 : 1
Digit 4 : 2
Digit 6 : 1
Digit 8 : 1

Четная цифра (и), которая имеет / имеет наибольшее вхождение — 0

И количество появлений (й): 4

Четная цифра (и), которая имеет / имеет наименьшее вхождение —
2
6
8
И количество появлений (й): 1

Пока это мой код … Кажется, я не могу получить последнюю часть нахождения наибольшего / наименьшего вхождения ..

Это мой код до сих пор:
void displayDigitInfoUpdateStanDeng () {

  int intsWorkedOn;
int* intValue;
int allDigitCount[10] = {0};
int largestOccurEven;
int smallestOccurEven;
int curDigit;

cout << "\n  Calling on displayDigitInfoUpdateStanDeng() --"<< "\n    How many integers (to be worked on) ? ";
cin >> intsWorkedOn;

intValue = new int[intsWorkedOn];

for (int i = 0; i < intsWorkedOn; i++) {

cout << "      Enter integer #" << i + 1 << ": ";
cin >> *(intValue + i);
}

for (int i = 0; i < intsWorkedOn; i++) {

do {

allDigitCount[*(intValue + i) % 10]++;

*(intValue + i) /= 10;
} while (*(intValue + i));
}

cout << "\n    Occurence of all existing digits --";

for (int i = 0; i < 10; i++) {cout << "\n        Digit " << i << " : " << allDigitCount[i];
}

cout << "\n    Occurence of all existing EVEN digits --";

for (int i = 0; i < 9; i++) {

cout << "\n        Digit " << i - 1 << " : " << allDigitCount[i++];
}

cout << "\n   The even digit(s) that has/have the largest occurrence -";

for (int i = 0; i < 9; i++) {largestOccurEven = allDigitCount[i++] % 10;

curDigit = allDigitCount[i++];

if (curDigit < largestOccurEven) {
cout << "\n    " << i
<< "\n And the number of occurrence(s) : " << largestOccurEven;
} else {
cout << endl;
}
}

Это мой текущий вывод:

Сколько целых чисел (над которыми нужно работать)? 2
Введите целое число 1: 1230476
Введите целое число № 2: 10034850

Occurrence of all existing digits --
Digit 0 : 4
Digit 1 : 2
Digit 2 : 1
Digit 3 : 2
Digit 4 : 2
Digit 5 : 1
Digit 6 : 1
Digit 7 : 1
Digit 8 : 1
Digit 9 : 0
Occurence of all existing EVEN digits --
Digit 0 : 4
Digit 2 : 1
Digit 4 : 2
Digit 6 : 1
Digit 8 : 1

Четная цифра (и), которая имеет / имеет наибольшее вхождение — 2

И количество появлений (й): 4

Четная цифра (и), которая имеет / имеет наименьшее вхождение —
?
И количество появлений (й): 0

Я так растерялся … Почему он отображает меня как 2 для самого большого случая? Мне действительно нужна помощь!

1

Решение

дела i++ То, что внутри цикла for означает, что вы смотрите в разные «корзины» на каждом из этих шагов:

largestOccurEven = allDigitCount[i++] % 10;

curDigit = allDigitCount[i++];

Вы хотите избежать этого. Например, измените оба на просто i и изменить for цикл соответственно:

for (int i = 0; i < 9; i += 2) {
0

Другие решения

Других решений пока нет …

По вопросам рекламы [email protected]