2013-03-20 6 views
0

나는 루프를 중첩하여 다음 (C 언어) 달성하기 위해 노력하고 있어요 :이이루프 로직 중첩

a[0] = b[0][0]; 
    a[1] = b[1][0]; 
    a[2] = b[1][1]; 
    a[3] = b[2][0]; 
    a[4] = b[2][1]; 
    a[5] = b[2][2]; 
    a[6] = b[3][0]; 
    a[7] = b[3][1]; 
    a[8] = b[3][2]; 
    a[9] = b[3][3]; 

:

:

for (j=0; j<3; ++j) 
     for (k=0; k<j; ++k) 
      a[i] = b[j][k]; 

을 나는이 필요하다고 생각을

for (i=0; i<9; ++i) 

하지만 어디에 넣어야할지 고민 중입니다. 논리에 대한 도움을 주시면 감사하겠습니다. 고맙습니다.

답변

2

두 수정.

일러스트를 바운드 검사를 포함 할 카운터를 포함

int i=0; 
for (j = 0; j <= 3; ++j) 
    for (k = 0; k <= j; ++k) 
     a[i++] = b[j][k]; 

Ideone

+0

좋은 눈! 나는 경계 확인을 놓쳤다. ... – Floris

+0

그것은 트릭을했다. 고마워요! – Ben

1

너무 가까이에! 이것은을 수행해야합니다

i=0; 
for (j=0; j<3; ++j) 
    for (k=0; k<j; ++k) 
     a[i++] = b[j][k]; 
+0

당신은 옳았다. 내 해결책이 잘못됐다. – joce

0

당신은 루프 중첩 된 내부 변수를 증가해야합니다

int i = 0; 
for (j=0; j<3; ++j) 
    for (k=0; k<j; ++k) 
     a[i++] = b[j][k];