2016-10-29 1 views
-4

저는 C++을 배우고 있습니다. 내 코드의 일부가 작동하지 않지만 문제가 무엇인지 이해하지 못합니다. 나는 얼마나 많은 숫자가 T 배열에서 반복되는지를 계산하는 stat 배열의 증가라고 생각한다. 어떻게 해결할 수 있는가? 어쩌면 구문 stat [elt] ++가 맞지 않습니까? 오류가 합계 [L] ++이었다 에 cmd의C++ 배열에서 얼마나 많은 숫자가 반복되는지 알아보기

#include <iostream> 
#include <cctype> 
#include <ctime> 
#include <cstdlib> 
#include <string> 
#include <sstream> 
using namespace std; 


int anneeSecu(int T[12][13], int j){ 
// here I join the 2 numbers of tab (they refer to the year of birth) and I add the number 20, because I know that they were born all after 2000 
     int a = T[j][1]; 
     int b = T[j][2]; 

     ostringstream oss; 
     oss << "20" << a << b; 
     istringstream iss(oss.str()); 
     int ab; 
     iss >> ab; 
     int annee = ab; 
     cout << annee << endl; 
     return annee; 
    } 




int main(){ 
    int T[12][13]={ {1,1,2,0,2,3,7,1,9,8,2,0,5}, 
        {2,1,3,0,5,8,9,9,0,8,1,0,2}, 
        {2,1,6,0,8,1,9,2,6,5,4,8,7}, 
        {2,1,5,0,6,5,6,3,4,6,0,6,7}, 
        {1,1,5,0,6,5,6,3,4,6,0,7,5}, 
        {2,1,5,0,2,5,6,3,4,6,0,6,7}, 
        {2,1,5,0,6,2,9,1,4,7,1,6,3}, 
        {2,1,4,0,6,2,2,1,4,7,1,6,3}, 
        {2,1,4,0,9,3,5,1,4,7,1,6,3}, 
        {1,1,1,1,2,5,6,1,7,5,0,0,7}, 
        {1,1,1,0,9,5,6,1,7,5,1,0,7}, 
        {2,1,4,1,0,3,5,1,4,7,0,2,2} }; 


    int stat[6]={0,0,0,0,0,0}; 
    for (int i=0;i<12;i++){ 
     int l=anneeSecu(T,i); 
     **stat[l]++;** 
    } 

return 0; 
} 

출력 동결

2012 

Process returned -1073741819 (0xC0000005) execution time : 1.764 s 
Press any key to continue. 

용액 (단지 0~5에서 숫자 걸리므 ...) 보정 => STAT

int l=anneeSecu(T,i); 
stat[l]++; 

:이 코드 조각에 문제가 있습니다 [L-2011] ++

+0

감사합니다. @ 비펜 ... 이제 나 좀 도와 줄 수있어? – Jurafsky

답변

1

anneeSecu 솔기가 배열의 길이보다 더 큰 수를 반환하기 때문입니다. l은 0과 5 사이 여야합니다. 그렇지 않으면 프로그램이 중단됩니다.

+0

나는 이해하지 못한다. 예를 들어, 가지고 있기 위해서 어떻게 쓸 수 있습니까? 2015 년에 이런 식의 코드가 있습니까? int l = 2015 (anneeSecu 기능의 결과로); stat [2015] ++; (2015가 배열에 몇 번이나 있는지 계산) – Jurafsky

+2

모든 것이 2011 년과 2016 년 사이에 있다는 것을 알고 있기 때문에'stat [l] '대신'stat [1-2011]'를 할 수 있습니다. 더 깨끗한 해결책은 배열에서 가장 작은 해를 계산하고이 값으로 모든 것을 오프셋하는 것입니다. – Zouch

+0

@Zouch 아! 이제는 이해합니다 ... stat가 마치 "stat [year] = 년 카운터"처럼 쓰여질 것이라고 생각했습니다. 저는 항상 Perl에서 이와 같은 배열을 만들었지 만 C++과 I에서는 한 번도하지 않았습니다. 어떻게 할 수 있는지 모르겠다. 도움을 주셔서 감사합니다. – Jurafsky

관련 문제