Мне нужен совет по заданию, который просит написать функцию, чтобы найти четную цифру, которая имеет наибольшее / наименьшее вхождение.
Мой вывод должен выглядеть так:
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 для самого большого случая? Мне действительно нужна помощь!
дела i++
То, что внутри цикла for означает, что вы смотрите в разные «корзины» на каждом из этих шагов:
largestOccurEven = allDigitCount[i++] % 10;
curDigit = allDigitCount[i++];
Вы хотите избежать этого. Например, измените оба на просто i
и изменить for
цикл соответственно:
for (int i = 0; i < 9; i += 2) {
Других решений пока нет …