본문 바로가기

프로그래밍/C언어과제

[C언어/과제/코드/Code::blocks]C언어 이차원 상에서 임의의 원과 한 점, 원과 점 사이의 관계 출력 C언어 프로그램 작성

이차원 상에서 임의의 원과 한 점이 주어졌을 때, 원과 점 사이의 관계를 출력하는 프로그램의 코드를 작성 해보겠습니다.

요구조건

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언어 코드를 작성해 보겠습니다.