題目出自杭電
題目大意:
給出兩矩形的對角線上的兩點(沒說是主對角線還是副對角線)求兩矩形的相交面積。
注意:
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;
}