2013-10-08 2 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 

Четные цифры (ы), который имеет/имеют наибольшее вхождение - 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 

Четные цифры (ы), который имеет/имеют наибольшее появление - 2

И число возникновения (ы): 4

Четные цифры, имеющие/имеют наименьшее количество случаев - ? И количество находок (их): 0

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

ответ

0

Doing i++ как что внутри вашего для петли означает, что вы ищете в разных «закромах» на каждом из этих этапов:

largestOccurEven = allDigitCount[i++] % 10; 

curDigit = allDigitCount[i++]; 

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

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

Ах да, это имеет смысл. Но теперь я не уверен, что делать с моим утверждением if. Мне нужно, чтобы он выводил только самые большие, но теперь значения curDigit и mostOccurEven одинаковы ... Не могли бы вы дать мне еще один намек? – user2809589

+0

Nevermind! Я изменил на оператор if: if (mostOccurEven> intsWorkedOn). Огромное спасибо!! – user2809589

Смежные вопросы