2013-11-23 2 views
0

나는 단계를 인쇄하고 while 루프로 이상한 문제를 일으키는 프로그램을 만들고있다. 어떤 이유로 루프가 0 대신 1에서 시작하고 정확히 왜 그 것인지를 정확히 알 수 없습니다.이상한 문제가 발생했습니다.

전류 출력 :

Array Rows: 5 
Array Columns: 5 
_ _ _ _ _ 
X _ _ _ _ 
X X _ _ _ 
X X X _ _ 
X X X X _ 

원하는 출력 :

if(rows == columns): 
     x = 0 
     while(x < rows): 
      y = 0 
      while(y < x): 
       array[x][y] = "X" 
       y += 1 
      x += 1 

참고 : 행과 열이 지정하는 메인 프로그램에서 사용자 입력입니다 경우 기능

Array Rows: 5 
Array Columns: 5 
X _ _ _ _ 
X X _ _ _ 
X X X _ _ 
X X X X _ 
X X X X X 

코드 2D 목록의 크기가 커야합니다.

Array Rows: 5 
Array Columns: 5 
1 
2 
2 
3 
3 
3 
4 
4 
4 
4 
_ _ _ _ _ 
X _ _ _ _ 
X X _ _ _ 
X X X _ _ 
X X X X _ 

주 : 여기

문제를 나타내는 디버그 출력과 출력이 출력의 변화는 루프하면서 중첩 2의 "X"의 프린트 명령문이다. 내가 운이없이 잘못이 무엇인지 알아 내려고 시간의 톤을 보냈다으로

어떤 도움을 크게 감상 할 수있다 :/

+0

하면 전체 코드를 표시 할 수 있습니다 : 당신이 조금 간단하게하기 위해 for 루프를 사용할 수 있을까? 행, 열, 배열 선언. – Christian

답변

1

은 행 0 0 X 용의가있을 것입니다, 행 1 1 X, 등등. 왜냐하면 루프 0이 시작되기 전에 초기 테스트 인 x < y이 실패하기 때문에 내부 루프 while 루프가 0 번 반복하기 때문입니다. 00 이상이어야합니다.

아마도 y <= x을 내부에 넣으려는 경우 while 루프가 발생합니까?

+0

아, 이것이 문제였습니다. 고맙습니다! –

1

y <= x이 대각선에서 행 번호가 과 같은지 여부를 테스트하고 싶을 것입니다.

if rows == columns: 
    x = 0 
    while x < rows: 
     y = 0 
     while y <= x: 
      array[x][y] = "X" 
      y += 1 
     x += 1 

그냥 힌트 :

if rows == columns: 
    for x in range(0, rows): 
     for y in range(0, x + 1): 
      array[x][y] = "X" 
관련 문제