c语言矩阵相交

【问题描述】

平面上有两个矩形A和B,其位置是任意的。编程求出其相交部分(如图中阴影部分)的面积。(0<a,b<1000)

 

【输入文件】

从标准输入读取两行以空格分隔的整数,格式如下:
Ax1 Ay1 Ax2 Ay2
Bx1 By1 Bx2 By2
其中(x1,y1)为矩形左上顶点座标,(x2,y2)为右下顶点座标。各座标值均为整数,取值在0至1000之间。
【输出文件】

向标准输出打印一个整数,是两矩形相交部分的面积(可能为0)。在输出末尾要有一个回车符。

#include<stdio.h>
int max(int m,int n)
{
    if(m>n) 
   return m;
 else
   return n;
}
int min(int m,int n)
{
    if(m>n)
    return n;
 else
    return m;
}
int main(){
 int ax1,ax2,ay1,ay2,bx1,bx2,by1,by2,a,b,c,d;
 scanf("%d %d %d %d",&ax1,&ay1,&ax2,&ay2);
 scanf("%d %d %d %d",&bx1,&by1,&bx2,&by2);
 a=min(max(ax1,ax2),max(bx1,bx2));//取到了横坐标中第二大的值
    b=min(max(ay1,ay2),max(by1,by2));//取到了纵坐标中第二大的值
    c=max(min(ax1,ax2),min(bx1,bx2));//取到了横坐标中第二小的值
    d=max(min(ay1,ay2),min(by1,by2));//取到了纵坐标中第二小的值
    if ( a>c && b>d )
        printf("%d",(a-c)*(b-d));
    else
        printf("0");
    return 0;

相交面积为两矩形横坐标中间两值中最大值减去另一个值,纵坐标也是同林。编写两个函数一个求最大值,一个求最小值。先取两最大值在取两最大值中的最小值。再用最大值减去最小值,再底乘高为矩形相交面积。

  • 1
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值