C 언어, 별(*) 문자로 원 그리기
글. 수알치 오상문
이번에는 별 문자를 이용하여 원을 그리는 예제입니다.
원의 공식은 다음과 같습니다.
x = x 좌표
y = y 좌표
r = 원 반지름
세 값이 다음을 만족하면 원을 구성하는 선입니다.
x^2 + y^2 = r^2 (즉, x제곱 + y제곱이 반지름 제곱과 같은 위치가 출력 위치)
그러므로 이 공식을 만족하는 위치에 별을 그려주면 원이 나타납니다.
원 공식에 의해 만들어진 코드는 다음과 같습니다.
그런데 문자 단위에서는 x축과 y축 비례가 다른데다가 해상도가 떨어지므로
원이 위 아래로 긴 타원처럼 보이고 일부 줄에서는 별이 나타나지도 않을 겁니다.
#include <stdio.h>
#define R 22
int main() {
int x, y;
for(x=-2*R; x<=2*R; x+=2) {
for(y=-R; y<=R; y++) {
if((x*x + y*y) == R*R)
printf("*");
else
printf(" ");
}
printf("\n");
}
return 0;
}
텍스트 화면에 맞게 보정한 코드는 다음과 같습니다.
앞 코드보다는 원이 더 명확하게 나타날 것입니다.
x 간격을 더 넓게 하고 그려줄 위치 범위 계산시 여유 값을 더 제공했습니다.
#include <stdio.h>
#define R 22
int main() {
int x, y;
for(x=-2*R; x<=2*R; x+=2) {
for(y=-R; y<=R; y++) {
if((x*x + y*y) >= R*R-R/1.3 && (x*x + y*y) <= R*R+R/1.3)
printf("*");
else
printf(" ");
}
printf("\n");
}
return 0;
}
[참고] 원 내부를 별로 채우려면
출력 조건을 다음처럼 변경해보세요.
if((x*x + y*y) <= R*R)
printf("*");
<이상>
'C' 카테고리의 다른 글
C 언어, 두 정수 또는 세 정수 중에서 가장 큰 수나 작은 수 찾기 (0) | 2018.08.06 |
---|---|
C 언어, n 번째 약수 찾기 (0) | 2018.08.05 |
C 언어, 현재 날짜 시간 출력 (0) | 2018.07.27 |
Find TEXTFILE (파일 목록 출력하기) (0) | 2018.07.27 |
C 언어, 시저 암호화 예제 (0) | 2018.07.24 |