用結構體求兩個圓的關系

定義一個圓的結構體,給兩個圓的圓心和半徑分別賦值,判斷兩個圓的關系(相交、相切、相離、重合)。
#import <Foundation/Foundation.h>
typedef struct
{
    int x;
    int y;
    float r;
} Circle;

void compareCircle(Circle a,Circle b)
{
    float  rr = 0;
    if (a.x>=b.x)//比較點坐標大小,用大數減掉小數;
    {
        int xab = a.x - b.x;
        if (a.y>=b.y)
        {
            int yab = a.y - b.y;
            rr = fabs(sqrt(xab * xab + yab * yab));
        }else
        {
            int yab = b.y - a.y;
            rr = fabs(sqrt(xab * xab + yab * yab));
        }
    }else
    {
        int xab = b.x - a.x;
        if (a.y>=b.y)
        {
            int yab = a.y - b.y;
            rr = fabs(sqrt(xab * xab + yab * yab));
        }
        else
        {
            int yab = b.y - a.y;
            rr = fabs(sqrt(xab * xab + yab * yab));
        }
    }
    if (a.x == b.x && a.y == b.y)
    {
        printf("兩個圓重合\n");
    }else if (rr > a.r + b.r)
    {
        printf("兩個圓相離\n");
    }else if ((rr ==a.r-b.r)||(rr==b.r-a.r)||(rr=a.r+b.r))
    {
        printf("兩個圓相切\n");
    }else
    {
        printf("兩個圓相交\n");
    }
}
int main()
{
    Circle c1,c2;
    printf("輸入要比較的圓1的坐標及半徑:\n");
    scanf("%d%d%f",&c1.x,&c1.y,&c1.r);
    printf("輸入要比較的圓2的坐標及半徑:\n");
    scanf("%d%d%f",&c2.x,&c2.y,&c2.r);
    compareCircle(c1, c2);
    return 0;
}
最后編輯于
?著作權歸作者所有,轉載或內容合作請聯系作者
平臺聲明:文章內容(如有圖片或視頻亦包括在內)由作者上傳并發布,文章內容僅代表作者本人觀點,簡書系信息發布平臺,僅提供信息存儲服務。

推薦閱讀更多精彩內容

  • 最近看了看一些數據,又和永杰兄聊了聊一些問題。 教育輸送人才最理想的時間段是從1980到2010年。在...
    晚秋室主人閱讀 219評論 0 0
  • 今天的風兒甚是喧囂~
    szhdnc閱讀 177評論 0 0
  • 2017/03/08霾 我感覺到外面是在下雨。黑夜 要吞噬空想漏洞 所有臆造出來的畫面 很松散。無非都是 在跟不愿...
    弓谷所長閱讀 316評論 3 4