zoukankan      html  css  js  c++  java
  • 观察特点

    杭电2056:

    Rectangles

    博客:Kings

    View Code
     1 #include<iostream>
     2 #include<iomanip>
     3 using namespace std;
     4 
     5 class p
     6 {
     7 public:
     8     double x;
     9     double y;
    10     friend istream& operator >>(istream& in, p& x);
    11 };
    12 
    13 istream& operator >>(istream& in, p& a)
    14 {
    15     in >> a.x >> a.y;
    16     return in;
    17 }
    18 void swap(p& a, p& b)
    19 {
    20     if(a.x > b.x)
    21     {
    22        double t = a.x;
    23        a.x = b.x;
    24        b.x = t;
    25     }
    26     if(a.y > b.y)
    27     {
    28         double t = a.y;
    29         a.y = b.y;
    30         b.y = t;
    31     }
    32 }
    33 int main()
    34 {
    35     p a, b, c, d;
    36     while(cin >> a >> b >> c >> d)
    37     {
    38         swap(a, b);
    39         swap(c, d);
    40         double area = 0.00;
    41         p m, n;
    42         m.x = a.x > c.x ? a.x : c.x;
    43         m.y = a.y > c.y ? a.y : c.y;
    44         n.x = b.x > d.x ? d.x : b.x;
    45         n.y = b.y > d.y ? d.y : b.y;
    46         cout.setf(ios::fixed);
    47         cout.precision(2);
    48         area = (m.x > n.x || m.y > n.y) ? 0 : (n.x-m.x)*(n.y-m.y);
    49         cout << area << endl;
    50     }
    51     return 0;
    52 }

    作图分析可知若两矩形相交相交两交点坐标应该是上述代码中的(x1,y1) (x2,y2),并且满足x2>x1 y2>y1,反之则两矩形不想交面积为0

    View Code
     1 #include<iostream>
     2 #include<cmath>
     3 #include<algorithm>
     4 using namespace std;
     5 int main()
     6 {
     7     double x1,y1,x2,y2,x3,y3,x4,y4;
     8     double x[4],y[4];
     9     double s,w,h;
    10     while(cin>>x1>>y1>>x2>>y2>>x3>>y3>>x4>>y4)
    11     {
    12         x[0]=x1;
    13         x[1]=x2;
    14         x[2]=x3;
    15         x[3]=x4;
    16         y[0]=y1;
    17         y[1]=y2;
    18         y[2]=y3;
    19         y[3]=y4;
    20         sort(x,x+4);
    21         sort(y,y+4);
    22         w=fabs(x2-x1)+fabs(x4-x3)-(x[3]-x[0]);
    23         h=fabs(y2-y1)+fabs(y4-y3)-(y[3]-y[0]);
    24         s=w*h;
    25         if(w<=0 || h<=0)s=0.00;
    26         cout.setf(ios::fixed);
    27         cout.precision(2);
    28         cout << s << endl;
    29     }
    30     return 0;
    31 }
  • 相关阅读:
    C#与Java的几点区别
    用VB读取记事本的内容,控制计算器的按钮(VB6)
    通过实例说明Java中的多态
    [导入]析构函数(内存泄漏,三法则)
    [导入]const限制符
    [导入]类的一些特殊限制成员
    [导入]基类的复制控制函数
    [导入]容器适配器
    [导入]派生类到基类转换的可访问性
    [导入](复制、默认)构造函数
  • 原文地址:https://www.cnblogs.com/sanghai/p/2985323.html
Copyright © 2011-2022 走看看