ハング電動ブラシOJタイトル(2056)

長方形(矩形領域サイズの2つの重複部分を計算)

件名の説明:

2つの矩形と各長方形の対角線上の2点の座標を考えると、あなたは、2つの長方形の交差部分の面積を計算する必要があります。その側面は、OX及びOYに平行です。

入力

入力入力の最初の行は、各diagonal.The 8数になければならない4点の座標を示す8つの正数はX1、Y1、X2、Y2、X3、Y3、X4、y4.That手段上の2つの点です第一矩形(X1、Y1)、(X2、Y2)である第二の矩形上の他の2点(X3、Y3)、(X4、Y4)です。

出力

それぞれの場合の出力の出力小数点以下2桁までの単一line.accurateアップでの交差部分の面積。

サンプル入力

1.00 1.00 3.00 3.00 2.00 2.00 4.00 4.00 
5.00 5.00 13.00 13.00 4.00 4.00 12.50 12.50

サンプル出力

1.00 
56.25

その答えによって:

#include<stdio.h>
void sort(double s[]){        //排序 
    int i,j;
    double temp;
    for(i=1;i<5;i++){
        for(j=4;j>i;j--){
            if(s[i]>s[j]){
                temp = s[i];
                s[i] = s[j];
                s[j] = temp;
            }
        }
    }

}

int main(){
    int i,j;
    double x[10],y[10],temp;
    while(scanf("%lf %lf %lf %lf %lf %lf %lf %lf",&x[1],&y[1],&x[2],&y[2],&x[3],&y[3],&x[4],&y[4])!=EOF){
    	//讨论4种情况 
        if((x[3]>x[1]&&x[4]>x[1]&&x[3]>x[2]&&x[4]>x[2])||(x[3]<x[1]&&x[4]<x[1]&&x[3]<x[2]&&x[4]<x[2])||(y[3]>y[1]&&y[4]>y[1]&&y[3]>y[2]&&y[4]>y[2])||(y[3]<y[1]&&y[4]<y[1]&&y[3]<y[2]&&y[4]<y[2])){
            printf("0.00\n");
        }else{
            sort(x);
            sort(y);
            printf("%.2lf\n",(x[3]-x[2])*(y[3]-y[2]));        //计算重合部分矩形 
        }
    }
}

 

公開された76元の記事 ウォンの賞賛3 ビュー1870

おすすめ

転載: blog.csdn.net/ZhangShaoYan111/article/details/104287462