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

出現回数が最小の偶数桁 - 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

私はとても混乱しています...なぜ最大の出現に対して i が 2 と表示されるのですか? 本当に助けが必要です!

4

1 に答える 1

0

fori++ループ内でそのようにすることは、これらの各ステップで異なる「ビン」を調べていることを意味します。

largestOccurEven = allDigitCount[i++] % 10;

curDigit = allDigitCount[i++];

あなたはそれを避けたいと思うでしょう。たとえば、両方を単にiに変更し、forループを適切に変更します。

for (int i = 0; i < 9; i += 2) {
于 2013-10-08T00:18:04.070 に答える