标题:求 矩形面积交 的问题
只看楼主
Leo_L
Rank: 2
等 级:论坛游民
帖 子:21
专家分:27
注 册:2017-2-26
结帖率:71.43%
已结贴  问题点数:20 回复次数:4 
求 矩形面积交 的问题
当输入 1 1 4 5 1 1 4 5 时,两个矩形是重合的,但是输出的结果却是 0.00,怎么破?



/*
问题描述
  平面上有两个矩形,它们的边平行于直角坐标系的X轴或Y轴。对于每个矩形,我们给出它的一对相对顶点的坐标,
请你编程算出两个矩形的交的面积。
输入格式
  输入仅包含两行,每行描述一个矩形。
  在每行中,给出矩形的一对相对顶点的坐标,每个点的坐标都用两个绝对值不超过10^7的实数表示。
输出格式
  输出仅包含一个实数,为交的面积,保留到小数后两位。
样例输入
1 1 3 3
2 2 4 4
样例输出
1.00
*/
#include<stdio.h>
int main(){
    double x1,x2,y1,y2,x3,y3,x4,y4,x,y;
    scanf("%f%f%f%f",&x1,&y1,&x2,&y2);
    scanf("%f%f%f%f",&x3,&y3,&x4,&y4);
    if(x1>x2){
        x=x1;x1=x2;x2=x;
    }
    if(x3>x4){
        x=x3;x3=x4;x4=x;
    }
    if(y1>y2){
        y=y1;y1=y2;y2=y;
    }
    if(y3>y4){
        y=y3;y3=y4;y4=y;
    }
     x = (x4 > x2) ? x2 : x4;
     x -= (x3 > x1) ? x3 : x1;
     y = (y4 > y2) ? y2 : y4;
     y -= (y3 > y1) ? y3 : y1;

     if(x <=0 || y <= 0){
           printf("0.00\n");}
     else{
            printf("%.2f\n", x * y);}
    return 0;
}
搜索更多相关主题的帖子: 绝对值 平面 
2017-03-02 18:54
宇宙规律
Rank: 3Rank: 3
等 级:论坛游侠
威 望:1
帖 子:232
专家分:128
注 册:2014-5-7
得分:10 
回复 楼主 Leo_L
#include<stdio.h>                    
int main(){                    
    double x1,x2,y1,y2,x3,y3,x4,y4,x,y;                    
    scanf("%lf%lf%lf%lf",&x1,&y1,&x2,&y2);                    
    scanf("%lf%lf%lf%lf",&x3,&y3,&x4,&y4);                    
    if(x1>x2){                    
        x=x1;x1=x2;x2=x;                    
    }                    
    if(x3>x4){                    
        x=x3;x3=x4;x4=x;                    
    }                    
    if(y1>y2){                    
        y=y1;y1=y2;y2=y;                    
    }                    
    if(y3>y4){                    
        y=y3;y3=y4;y4=y;                    
    }                     
     x = (x4 > x2) ? x2 : x4;                     
     x -= (x3 > x1) ? x3 : x1;                    
     y = (y4 > y2) ? y2 : y4;                    
     y -= (y3 > y1) ? y3 : y1;                    
                    
     if(x <=0 || y <= 0){                     
           printf("0.00\n");}                     
     else{                     
            printf("%.2lf\n", x * y);}                     
    return 0;                    
}                    


1 1 3 3
2 2 4 4
1
Press any key to continue



1 1 4 5
1 1 4 5
12
Press any key to continue



2017-03-02 19:19
Leo_L
Rank: 2
等 级:论坛游民
帖 子:21
专家分:27
注 册:2017-2-26
得分:0 
回复 2楼 宇宙规律
大神大神,为什么把输出改成“%lf”就对了呀?  明明 1 1 4 5 1 1 4 5 没有超过“%f”的范围啊,求解释 @ W @

[此贴子已经被作者于2017-3-3 08:35编辑过]


元气少女Leo_L
2017-03-03 08:28
rjsp
Rank: 20Rank: 20Rank: 20Rank: 20Rank: 20
等 级:版主
威 望:507
帖 子:8890
专家分:53117
注 册:2011-1-18
得分:10 
回复 3楼 Leo_L
为什么把输出改成“%lf”就对了呀
------ 输出改不改无所谓,有所谓的是输入
2017-03-03 08:30
Leo_L
Rank: 2
等 级:论坛游民
帖 子:21
专家分:27
注 册:2017-2-26
得分:0 
回复 4楼 rjsp
谢谢大神

元气少女Leo_L
2017-03-03 08:36



参与讨论请移步原网站贴子:https://bbs.bccn.net/thread-474699-1-1.html




关于我们 | 广告合作 | 编程中国 | 清除Cookies | TOP | 手机版

编程中国 版权所有,并保留所有权利。
Powered by Discuz, Processed in 0.392498 second(s), 8 queries.
Copyright©2004-2024, BCCN.NET, All Rights Reserved