HDU2056

題目出自杭電
題目
題目大意:
給出兩矩形的對角線上的兩點(沒說是主對角線還是副對角線)求兩矩形的相交面積。
注意:
1.注意給的對角線不一定是主對角線,所以要轉換成主對角線上的點,。

2.還需要判斷形成的兩個矩形是否有相交的部分,如果沒有直接輸出0.00,判斷條件是:第四個點的橫座標、縱座標都大於第一個點的;且第三個點的橫、縱座標都小於第二個點的。

3.計算相交部分的面積,取第二個、第四個點中較小的點,取第一個、第三個點中較大的點,求以這兩個點爲對角線的矩形面積。

#include <stdio.h>
#include<iostream>
void change(double *x1,double *y1,double *x2,double *y2)
{
    double t;
    if(*x1 > *x2)
    {
        t=*x1;
        *x1=*x2;
        *x2=t;
    }
    if(*y1 > *y2)
    {
        t=*y1;
        *y1=*y2;
        *y2=t;
    }
}
int main()
{
    double A[8],x1,y1,x2,y2;
    while(~scanf("%lf%lf%lf%lf%lf%lf%lf%lf",&A[0],
                &A[1],&A[2],&A[3],&A[4],&A[5],&A[6],&A[7]))
    {
        change(&A[0],&A[1],&A[2],&A[3]);
        change(&A[4],&A[5],&A[6],&A[7]);
        x1= A[0] > A[4] ? A[0] : A[4];//x1與x3作比較,取max
        y1= A[1] > A[5] ? A[1] : A[5];//y1與y3作比較,取max
        x2= A[2] < A[6] ? A[2] : A[6];//x2與x4作比較,取min
        y2= A[3] < A[7] ? A[3] : A[7];//y2與y4作比較,取min
        if((x2-x1)<0 || (y2-y1)<0)
            printf("0.00\n");
        else
            printf("%.2lf\n",(x2-x1)*(y2-y1));
    }
    return 0;
}
發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章