0

私はこれで2時間以上働いています。問題を 1 つのコードに切り分けました。

問題は私の配列にあります。本当に大きな負の値を出力しています。配列に入力している値は正しいです。私は Java の経験がありますが、これは私の最初の C++ プログラムです。

   #include <cstdlib>
   #include <iostream>
   #include <sstream>
   #include <string>

   using namespace std;

   int main(){
    string inputString;
    cin >> inputString;
    cout << inputString << endl;

    int mainArray[10];

    for(int x = 0; x < inputString.length(); x++){
        int valFound = inputString[x]-48; //minus 48 to change from ascii to int
        mainArray[valFound]++;
        cout << mainArray[valFound];
    }

    return 0;
    }

どんな助けでも大歓迎です、これは私を夢中にさせています。

4

2 に答える 2

6

アレイはデフォルトで初期化されています。タイプのデフォルトの初期化では、int「ガベージ」のままになります。0明示的に初期化する必要があります。

int mainArray[10] = {0};
于 2013-03-29T23:43:47.650 に答える
2

これは、配列を初期化する必要があるためです。これをコードに追加します。

for (int i = 0 ; i != 10 ; i++) {
    mainArray[i] = 0;
}

または、次を使用できますmemset

memset(mainArray, 0, sizeof(mainArray));
于 2013-03-29T23:43:48.577 に答える