2016-06-14 4 views
0

나는 내 합계를 변수에 저장하여 년 사이에 백분율을 더하려고합니다. 지금 나는 이것을하는 방법에 곤란하다. 나는 대답을 검색하고 몇 가지를 시도했지만, 아직 운이 없다. 나는 누군가가 올바른 방향으로 이것을 지적 할 수 있는지 궁금해했다. 나는 기억의 위치를 ​​얻고 가치를 잃지 않는다. 나는 대학생이므로 나와 함께 견뎌주십시오. 어떤 도움이라도 대단히 감사하겠습니다. 검토 할 코드는 다음과 같습니다.for 루프의 데이터를 다른 계산을 위해 변수에 저장하는 방법은 무엇입니까?

#define years 4 
#define months 12 
int main(void) 
{ 
    float percentage [4]; 
    int i = 0, j = 0, n = 0, sum = 0; 
    int time[] = { 2012,2013,2014,2015}; 
    int *value[years]; 
    const char* name[]= {" JAN ", "FEB ", "MAR ", "APR ", "MAY ", "JUN ", "JUL ","AUG ","SEP ","OCT ","NOV ","DEC "}; 
    int range[years][months] = { 

     { 5626, 5629, 5626, 5606, 5622, 5633, 5647, 5656, 5673, 5682, 5728, 5728}, 
     { 5741, 5793, 5814, 5811, 5831, 5854, 5857, 5874, 5900, 5923, 5954, 5939}, 
     { 5999, 6020, 6062, 6103, 6115, 6128, 6169, 6194, 6219, 6233, 6256, 6301}, 
     { 6351, 6378, 6371, 6409, 6426, 6426, 6437, 6441, 6451, 6484, 6549, 6597} 
    }; 

    printf(" YEAR %s %s %s %s %s %s %s %s %s %s %s %s\n", name[0], name[1], name[2], name[3], name[4], name[5], name[6],name[7],name[8],name[9],name[10],name[11]); 
    /* for(n=0; n < name; n++) 
      printf("%s", name[n]); // code keeps crashing my program 
    */ 
    for (i = 0; i < years; i++) { 
     printf(" %i ", time[i]); 
     for (j = 0; j < months; j++) 
      printf("%2i ", range[i][j]); 
      printf("\n"); 

    } 

    for (i = 0; i < years; i++) { 
     for(j = 0, sum = 0; j < months; j++) 
      sum += range[i][j]; 
      printf("\n This is the sum of months for %i: %i", time[i], sum); 


    } 
    for (i = 0; i < years; i++) { 
     for(j = 0, sum = 0; j < months; j++) 
      value[years] = sum; 
      printf("\n%i", value); 
    } 

    return 0; 

} 
+0

마지막 for 루프에서 sum을 0으로 설정하고 절대로 변경하지 마십시오. 따라서 모든 값을 0으로 설정하게됩니다. –

+0

또한 마지막 루프에서 [년] 대괄호 및 색인을 사용하는 것을 잊었으므로 해당 색인에서 값을 인쇄 할 수 있습니다. –

+0

응답 해 주셔서 감사합니다. 나는 그것을 지금 보게 될 것이다. – RTriplett

답변

1

int의 배열로 변경 value. value을 포인터의 배열로 만드는 것은 이치에 맞지 않습니다.

int value[years]; // Drop the * 

다음 연도에 대한 합계를 계산할 블록이 있습니다.

for (i = 0; i < years; i++) { 
    for(j = 0, sum = 0; j < months; j++) 
     sum += range[i][j]; 
     printf("\n This is the sum of months for %i: %i", time[i], sum); 
} 

그러나 합계는 저장되지 않습니다. 매년 겹쳐 쓰여집니다.

당신이해야 할 일은 합계를 value에 저장하는 것입니다. 사용 :

for (i = 0; i < years; i++) 
{ 
    value[i] = 0; 
    for(j = 0, sum = 0; j < months; j++) 
    { 
     value[i] += range[i][j]; 
    } 
    printf("\n This is the sum of months for %i: %i", time[i], value[i]); 
} 

그런 다음 마지막 루프가 필요하지 않습니다.

+0

정말 고마워요. 나는 정말로 그것을 고맙게 생각한다. – RTriplett

+0

@RTriplett, 여러분은 환영합니다. 내가 도울 수있어서 기뻐. –

관련 문제