長方形(矩形領域サイズの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])); //计算重合部分矩形
}
}
}