2013-03-29 1 views
0

나는 2 시간 이상이 작업을 해왔다. 내 문제를 하나의 코드 조각으로 분리했다.배열 값이 C++에서 잘못 나온다

내 배열에 문제가 있습니다. 정말 큰 부정적인 가치를 내고 있습니다. 배열에 입력하는 값이 정확합니다. 나는 자바에 익숙하지만, 이것은 나의 첫 번째 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; 
    } 

어떤 도움을 주시면 감사하겠습니다.

+3

'INT mainArray [10] = {0};'배열을 초기화한다. –

+0

또한,'inputString [x] - '0 ''이 더 이식성이 있습니다. –

+0

@DanielFisher 또는 SamFrench는 답을주십시오! – didierc

답변

6

배열이 기본값으로 초기화되고 있습니다. int 유형의 기본 초기화는 "쓰레기와 함께"남겨 둡니다. 0으로 명시 적으로 초기화해야합니다.

+0

그게 작동합니다. 전에 맹세 했었지만, 그렇지 않다고 생각합니다. 고마워요. –

2

이는 배열을 초기화해야하기 때문입니다. 코드에 이것을 추가

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

다른 방법으로, memset를 사용할 수 있습니다

memset(mainArray, 0, sizeof(mainArray)); 
+0

전통 C! 아주 좋은 항상 :) – JalalJaberi