2014-02-20 1 views
1

가정 foo는 [10] [10] 여기에 지금까지 내 코드 ''이미 가득 :이 오른쪽 하단 왼쪽 상단에서 선을 그립니다어떻게 2D 배열에 X를 그립니까? C++

for(int q = 0; q <10; q++) 
{ 
foo[q][q] = 'x'; 
} 

,하지만 난 알아낼 수 없습니다 다른 루프를 넣지 않고 왼쪽 하단에서 오른쪽 상단까지 선을 그리는 방법. 나는 그 단순함을 안다. 그러나 나는 중요한 논리가 빠져 있다고 생각한다.

하나의 루프 만 사용하여 X를 만들 수 있습니까, 아니면 시간을 낭비하고 싶습니까?

답변

3
for(int q = 0; q <10; q++) 
{ 
    foo[q][q] = 'x'; 
    foo[q][10 - q - 1] = 'x'; 
} 

10 - q - 1 = 9 - q 

9은 배열의 최대 색인입니다.

+0

댕, 나는 정말 그렇게 쉽게 될 줄 알았어. 그냥 내 손가락을 가져갈 수 없었다. 감사. – user3331346

0

예 여러 변수가있는 단일 루프를 사용하여 수행 할 수 있습니다. 값이 증가하면 j의 값이 감소합니다. 그러므로 foo는 [J]를 [I]이 요구는 오른쪽으로 맨 왼쪽 아래에서 대각선의 'X'넣어 루프를 만든다

foo[9][0] for the first iteration 
foo[8][1] for the second iteration 
foo[7][2] for the third iteration 
..... 
till 
foo[0][9] for the last iteration 

참조한다.

for(int q = 0 ,int j=9 ; q <10; q++,j--) 
{ 
foo[q][q] = 'x'; 
foo[j][q] = 'x'; 
}