2013-10-08 60 views
1

我需要一些關於賦值的建議,要求編寫函數來查找具有最大/最小值的偶數位。查找整數數組中的最大位數

我的輸出應該是這樣的:

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 

偶數位(S),有/有最大的發生 - 0

和發生的(一個或多個)的數量:4

具有/最小出現次數的偶數 - 而且發生次數:1

這是到目前爲止我的代碼...我似乎無法得到發現最大/最小的發生..

這是我的代碼迄今的最後一部分: 無效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 

的甚至有位(S)/具有最大的發生 - 2

和發生(S)的數量: 4

具有/最小發生次數的偶數 - ? 而且事件的數量:0

我很困惑...爲什麼它顯示我爲2最大的事件?我真的需要幫助!

回答

0

i++一樣,裏面的for循環意味着你正在尋找不同的「垃圾箱」在每個步驟:

largestOccurEven = allDigitCount[i++] % 10; 

curDigit = allDigitCount[i++]; 

你想避免這樣做。例如,將兩者都更改爲i並適當更改for循環:

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

是的,這樣做更有意義。但是現在我不確定如何處理我的if語句。我需要它只輸出最大的值,但現在curDigit和largestOccurEven的值是一樣的......你介意給我一個更多的提示嗎? – user2809589

+0

沒關係!我更改爲if語句:if(largestOccurEven> intsWorkedOn)。非常感謝!! – user2809589