試題 基礎練習 矩形面積交
阿新 • • 發佈:2021-02-02
問題描述
平面上有兩個矩形,它們的邊平行於直角座標系的X軸或Y軸。對於每個矩形,我們給出它的一對相對頂點的座標,請你程式設計算出兩個矩形的交的面積。
輸入格式
輸入僅包含兩行,每行描述一個矩形。在每行中,給出矩形的一對相對頂點的座標,每個點的座標都用兩個絕對值不超過10^7的實數表示。
輸出格式
輸出僅包含一個實數,為交的面積,保留到小數後兩位。
樣例輸入
1 1 3 3
2 2 4 4
樣例輸出
1.00
程式碼:
#include<iostream>
using namespace std;
#include<stdio.h>
double max(double a,double b)
{
if(a>b)return a;
else return b;
}
double min(double a,double b)
{
if(a<b)return a;
else return b;
}
void swap(double& a,double& b)
{
double t=a;
a=b;
b=t;
}
int main()
{
double x1=0,y1=0;
double x2=0,y2=0;
double x3=0,y3=0;
double x4=0,y4=0;
cin>>x1>> y1>>x2>>y2;
cin>>x3>>y3>>x4>>y4;
if(x1>x2)swap(x1,x2);
if(y1>y2)swap(y1,y2);
if(x3>x4)swap(x3,x4);
if(y3>y4)swap(y3,y4);
double a=0,b=0,c=0,d=0;
a=max(x1,x3);
b=max(y1,y3);
c=min(x2,x4);
d=min(y2,y4);
double m=c-a;
double n=d-b;
double S= m*n;
if(m<=0||n<=0)printf("0.00");
else printf("%.2f",S);
return 0;
}