码迷,mamicode.com
首页 > 其他好文 > 详细

swun 1184

时间:2015-09-11 22:13:17      阅读:215      评论:0      收藏:0      [点我收藏+]

标签:

解题思路:这题其实还是有点麻烦的,思路要清晰,关键是要找出中间的那个点。

已知不共线的三点:A(x1,y1),B(x2,y2),C(x3,y3),
平行四边形ABCD的点D的坐标由对角线AC与BD互相平分得D(x1+x3-x2,y1+y3-y2).
注意;当顺序未定时有3种不同的情况.(此题已经找出中间点,顺序就已经确定)

技术分享
#include<cstdio>
int main()
{
    double x1, x2, x3, x4, x, y1, y2, y3, y4, y;
    while(~scanf("%lf%lf%lf%lf%lf%lf%lf%lf", &x1,&y1,&x2,&y2,&x3,&y3,&x4,&y4))
    {
        int cnt = 0; //cnt用来标记出重复出现的点。
        //说明第三个点是重复出现的点。
        if((x1 == x3 && y1 == y3) || (x2 == x3 && y2 == y3)) x = x3, y = y3, cnt = 3;
        //说明第四个点是重复出现的点。
        if((x1 == x4 && y1 == y4) || (x2 == x4 && y2 == y4)) x = x4, y = y4, cnt = 4;

        if(cnt == 3)    //第三个点是重复出现的点。
        {
            //第一个点是重复出现的点,则执行这一步。
            if(x == x1 && y == y1) printf("%.3lf %.3lf\n", x2+x4-x, y2+y4-y);
            //第二个点是重复出现的点。
            else printf("%.3lf %.3lf\n", x1+x4-x, y1+y4-y);
        }
        else
        {
            if(x == x1 && y == y1) printf("%.3lf %.3lf\n", x2+x3-x, y2+y3-y);
            else printf("%.3lf %.3lf\n", x1+x3-x, y1+y3-y);
        }
    }
    return 0;
}
View Code

 

swun 1184

标签:

原文地址:http://www.cnblogs.com/loveprincess/p/4802150.html

(0)
(0)
   
举报
评论 一句话评论(0
登录后才能评论!
© 2014 mamicode.com 版权所有  联系我们:gaon5@hotmail.com
迷上了代码!