오늘은 C언어 별찍기 예제를 알아보겠습니다.
우리가 만들 모양은 이렇게 반쪽짜리 다이아를 별로 그려보려고 하는데요.
소스코드 자체는 그렇게 길지 않습니다.
간단하죠? 그런데 처음부터 소스코드를 보는 것보다는
어떻게 하면 저런 모양으로 별을 찍을지 생각해보는 것이 좋습니다.
----------------------------------------------------------------------------------------------------------------------------------------------------
충분히 생각해보셨을 것이라 믿고, 위의 소스코드를 설명하겠습니다.
우선 4번줄부터 9번줄까지는 이중 for문이 있습니다.
첫번째 for문에서는 i가 0에서부터 5가 될 때까지 총 5회 반복을 하는 부분입니다.
근데 그 5회 동안 어떤 작업을 하는지가 문제인데요.
두번째 for문에 그 답이 들어있습니다.
두번째 for문에서는 j의 값이 0부터 i의 값보다 작거나 같을 때까지만 *을 찍고,
j의 값이 i의 값보다 커지면 개행(\n)을 해야 합니다.
즉 i가 0일 때는 j는 0부터 0까지만 작동합니다. 그렇기 때문에
별표 하나를 찍고 끝나겠죠.
그리고 개행을 합니다.
같은 원리로 i가 1일 때는 j는 0~1까지만 작동합니다.
그렇기 때문에 별표를 두개 찍습니다.
그리고 개행을 합니다.
감이 오시나요?
이렇게 하면 총 5번 반복할때까지
별이 1개씩 증가하도록 출력을 할 수가 있습니다.
밑에 감소하는 별도 마찬가지입니다.
11~16번줄은 그 반대로 한 것인데,
첫번째 for문의 i의 조건은 같습니다.
그런데 두번째 for문에 약간 변화가 있는데요,
j의 값을 처음에 5로 초기화시키고,
i보다 클 경우에만 별을 찍으라고 하고 있습니다.
즉, i가 0일 때는 j는 5~1까지만 작동합니다.
그럼 별을 다섯 개 찍겠죠?
그리고 개행을 합니다.
i가 1일때 j는 5~2까지만 작동합니다.
그럼 별을 네 개를 찍겠네요.
이렇게 반복하면 반쪽짜리 다이아몬드를
만들 수가 있습니다.
이 문제를 조금 응용하면 완전한 다이아몬드를
그릴 수도 있으니 한번 도전해보시면 좋을 것 같네요.
'프로그래밍 > C Programming' 카테고리의 다른 글
C언어 SelectionSort에 대해 알아보자 (0) | 2018.07.26 |
---|---|
C언어 싱글링크드리스트 예제로 살펴보기 (0) | 2018.07.25 |
C언어 예제를 통해 알아보는 포인터 (0) | 2018.07.23 |
Windows 10 - Ubuntu 공유폴더 설정하기 (0) | 2018.07.20 |
C언어 QuickSort 예시로 살펴보기 (0) | 2018.07.19 |