이차원 상에서 임의의 원과 한 점이 주어졌을 때, 원과 점 사이의 관계를 출력하는 프로그램의 코드를 작성 해보겠습니다.
요구조건
1. 입력시 1개의 임의의 점과 1개의 임의의 원을 입력으로 한다.
점은 이차원 상의 점이므로 (x,y)으로 표현되며, 정수로 한정한다
원은 이차원 상에 있으므로 중심의 위치 (a,b)와 반지름의 길이 r로 표현한다.
숫자 입력은 정수로 한정한다.
2, 출력시 점은 (x,y)형태로 ,원은 (x-a)^2 + (y-b)^2=r^2의 형태로 출력한다.
단 a나 b가 0인경우 x^2혹은 y^2 형태로 나타낸다.
원과 점 사이의 관계를 원의 내부, 원의 외부, 원 위의 하나로 나타내고 이를 출력한다.
if~else 조건문 사용하여 코드를 작성 해보았습니다.
#include <stdio.h>
#include <math.h>
int main()
{
int a,b,x,y,r; // 변수 지정
printf("점(a,b):"); //출력
scanf("%d %d", &a,&b);//입력
printf("중심과 반지름(x,y,r):"); //출력
scanf("%d %d %d",&x,&y,&r); //입력
if((sqrt((a-x)*(a-x)+(b-y)*(b-y))<r)&&r>0) //원의 내부 조건
{
printf("원의 내부에 있습니다.\n"); //조건이 맞을 시 출력값
printf("점(%d,%d)\n",a,b); //출력값
if(x!=0&&y!=0){ //조건이 x가 0이 아니고 y가 0이 아닐시 출력값
printf("(x-%d)^2 + (y-%d)^2=%d^2",x,y,r);
}
else if(x==0&&y!=0){ //조건이 x가 0이고 y가 0이 아닐시 출력값
printf("x^2 + (y-%d)^2=%d^2",y,r);
}
else if(x!=0&&y==0){ //조건이 x가 0이아니고 y가 0일시 출력값
printf("(x-%d)^2 + y^2=%d^2",x,r);
}
else{ //조건이 x가 0이고 y가 0일시 출력값
printf("x^2 + y^2=%d^2",r);
}
}
else if((sqrt((a-x)*(a-x)+(b-y)*(b-y))>r)&&r>0) //원의 외부 조건
{
printf("원의 외부에 있습니다.\n"); //조건이 맞을시 출력값
printf("점(%d,%d)\n",a,b); //출력값
if(x!=0&&y!=0){ //조건이 x가 아니고 y가 0이 아닐시 출력값
printf("(x-%d)^2 + (y-%d)^2=%d^2",x,y,r);
}
else if(x==0&&y!=0){ //조건이 x가 0이고 y가 0이 아닐시 출력값
printf("x^2 + (y-%d)^2=%d^2",y,r);
}
else if(x!=0&&y==0){ //조건이 x가 0이아니고 y가 0일시 출력값
printf("(x-%d)^2 + y^2=%d^2",x,r);
}
else{ //조건이 x가 0이고 y가 0일시 출력값
printf("x^2 + y^2=%d^2",r);
}
}
else if((sqrt((a-x)*(a-x)+(b-y)*(b-y))==r)&&r>0) //원위에 조건
{
printf("원 위에 있습니다.\n"); //조건이 맞을시 출력값
printf("점(%d,%d)\n",a,b); //출력값
if(x!=0&&y!=0){ //조건이 x가 아니고 y가 0이 아닐시 출력값
printf("(x-%d)^2 + (y-%d)^2=%d^2",x,y,r);
}
else if(x==0&&y!=0){ //조건이 x가 0이고 y가 0이 아닐시 출력값
printf("x^2 + (y-%d)^2=%d^2",y,r);
}
else if(x!=0&&y==0){ //조건이 x가 0이아니고 y가 0일시 출력값
printf("(x-%d)^2 + y^2=%d^2",x,r);
}
else{ //조건이 x가 0이고 y가 0일시 출력값
printf("x^2 + y^2=%d^2",r);
}
}
else if(r==0) //반지름이 0 일시 조건과 출력값
{
printf("원이 존재하지 않습니다.");
}
else //위에 조건이 전부 아닐시 출력값
{
printf("입력한 값은 구할수가 없습니다.");
}
return 0;
}
다음엔 사용자로부터 0부터 359까지의 정수를 입력 받고 몇 사분면인지 출력하는
프로그램을 만드는 C언어 코드를 작성해 보겠습니다.
'프로그래밍 > C언어과제' 카테고리의 다른 글
[C언어/과제/코드/Code::Blocks]6으로 나누어지면서 4로는 나누어 지지 않는 C언어 프로그램을 작성해 보겠습니다. (0) | 2016.05.08 |
---|---|
[C언어/과제/코드/Code::Blocks]사용자로부터 0~359 까지의 정수입력 받고 몇 사분면인지 출력하는 C언어 프로그램 작성하기 (0) | 2016.05.08 |
[C언어/과제/코드/Code::Block]C언어 정수를 입력 받아 정수를 이루는 숫자 출력 프로그램 작성. (0) | 2016.05.02 |
[C언어/과제/코드/Code::Block]C언어로 원의 둘레 길이 입력 반지름 출력 (0) | 2016.05.01 |