2010년 8월 30일 월요일

( 역피라미드를 그리는 별 ) 코딩 과정.

( 역피라미드를 그리는 별 ) 코딩.


- 1.1 버전 -

-  파란칸을 보면 1.1버전의 경우 입력한 숫자보다 별의 갯수가 1개가 부족하고
   역피라미드의 형태가 아닌 한쪽에 쏠린 삼각형의 모양을 하고 있습니다.



 - 피라미드가 한줄씩 내려갈수록 한칸씩 띄우는 부분이 어려워서 마직막
   최종 성공 버전과 비교해보면 알겠지만 1.1버전은 아직 칸을 띄우는 코드는
   작성하지 않은 상태입니다.



- 1.2 버전 -
 

-  1.2버전의 경우 여전히 입력한 숫자보다 별의 갯수가 1개가 부족하고
   여전히 역피라미드의 형태가 아닌 한쪽에 쏠린 삼각형의 모양을 하고 있습니다.
   하지만, 각줄 첫부분 일정하게 칸을 띄우는 것은 성공한 것을 볼 수 있습
   니다.



- 위의 코드와 비교해 보면 변수 j를 이용하여 각 줄 첫부분이 일정한 칸을
  띌 수 있도로 코드를 작성하였습니다.



- 1.3 버전 -

- 입력한 별의 갯수와 출력되는 별의 갯수가 일치하는 것을 볼 수 있고
  별의 배열 또한 완벽한 역피라미드의 형태를 띄고 있는 것을 볼 수 있습니다.



- 얼핏 보면 앞 버전의 코드와 거의 다른 것이 없어보이지만 눈에 띄지 않은
  작은 차이가 가장 큰 오류를 발생시키고 있었습니다. 
  파란색 표시된 부분이 지금껏 별의 갯수와 모양이 제대로 출력되지 않았던
  주원인으로 k = 1을 k = i 라고 바꿔주면서 모든 문제가 해결되었습니다.



- 최 종 확 인 -


 
- 알 고 리 즘 -


- 가장 외부의  for문은 피라미드의 행과 관계가 있습니다.
 예를 들어,입력 값이 9인데 행의 개수가 5개 라는 것은 입력값을 반으로 나눈
 것보다도 수치가 1  더 큰 수가 외부 for문의 회전수라는 의미입니다.
 그래서 입력값 a/2 보다 작다가 아닌 N/2 이하일 때까지 순환하여 입력 값의
 반보다 1회 더 순환 할 수 있습니다.
 내부 for문은 "  " 를 출력하는 for문과 " * " 을 출력하는 for문으로 나누었습니다.
 빈칸을 찍는 for문은 외부 for문의 i값에 의하여 1개씩 증가합니다.
 첫 행에는 빈칸을 찍으면 안되므로 외부 for문의 i값에 미만으로 합니다.
 외부 for문의 i가 0일 때는 안찍고 1일 때는 1개 찍고 2일 때 2개 찍히게 됩니다.
 " * "를 찍는 for문은 " * "가 매번 2개씩 줄어들게 됩니다.
 그림으로 볼 경우 앞에서 하나씩 뒤에서 하나씩 줄어듭니다.
 j의 시작은 i로 인하여 행마다 그 시작값이 증가합니다.
 그만큼 행마다 그 순환하게 되는 횟수가 감소하게 됩니다.
 마찬가지로 a-i 미만으로 한 것은 역시 i가 증가할 때 마다 그 순환하는 횟수가
 감소하게 되기 때문입니다.

# Linux에서 main 함수에  int argc과 char *argv[], 그리고 return은 반드시
 사용되어야 합니다.

댓글 없음:

댓글 쓰기