我需要一些关于分配的建议,该分配要求编写一个函数来查找出现最大/最小的偶数位。
我的输出应该如下:
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?我真的需要帮助!
答案 0 :(得分:0)
在你的for循环中执行i++
这样的意思就是你在每个步骤中查看不同的“分类”:
largestOccurEven = allDigitCount[i++] % 10;
curDigit = allDigitCount[i++];
你会想避免这样做。例如,将两者都更改为i
并适当更改for
循环:
for (int i = 0; i < 9; i += 2) {