2016-09-10 3 views
-1

내가 a, b, c, ..., g라고 표시된 7 가지 냄비가있는 곳에서 프로그램을 만들고 싶다고합시다. 각 냄비에는 2 개의 씨가 있습니다. 이제 나는 손에 8 개의 씨를 가지고 있는데, 각 씨앗에 1 개의 씨앗을 넣어야합니다. 우리가 냄비 7 개를 가지고 있고 각각의 냄비에 씨앗을 넣은 후에, 나는 손에 남아있는 씨앗이 하나 더 있고 씨앗을 냄비에 넣어야합니다. 배열을 사용하면 어떻게 될까요?배열 배열 내부에서 루핑하기

나는 7 번째 냄비까지 그것을했다, 어떻게 그것을 흙 냄비에 되돌아 가게 하느냐?

int house[8] = {2, 2, 2 ... 2}; 

for(int i = 1; i < 8; i++) { 
    hand--;  // seed in hand 
    house[i + 7]++; // seed increases in each pot 

    if (i == 6) { 
     house[7]--; 
    } 

    printout(); 
} 
+1

우선 배열 범위를 벗어나는 액세스를 중지하거나 * 정의되지 않은 동작 *을 호출합니다. 'house [0]'~'house [7]'만이'int house [8]'선언에 사용 가능합니다. – MikeCAT

답변

2

원하는대로하십시오.

#define POT_NUM 7 

int main(void) { 
    int seeds_in_hand = 8; 
           /* a, b, c, d, e, f, g */ 
    int seeds_in_pots[POT_NUM] = {2, 2, 2, 2, 2, 2, 2}; 

    int next_pot = 0; 
    while (seeds_in_hand > 0) { 
     /* put a seed from the hand to a pot */ 
     seeds_in_hand--; 
     seeds_in_pots[next_pot]++; 
     /* move on the next pot */ 
     next_pot = (next_pot + 1) % POT_NUM; 
    } 

    return 0; 
} 

첫 번째 냄비로 돌아가려면, 당신은 모듈

next_pot = (next_pot + 1) % POT_NUM; 

또는 조건을 사용할 수 있습니다.

next_pot++; 
if (next_pot >= POT_NUM) next_pot = 0; 
관련 문제