| ||||||||||
| Online Judge | Problem Set | Authors | Online Contests | User | ||||||
|---|---|---|---|---|---|---|---|---|---|---|
| Web Board Home Page F.A.Qs Statistical Charts | Current Contest Past Contests Scheduled Contests Award Contest | |||||||||
Re:直接用atan算出来的角度排序为什么不对呢。。山东理工的OJ上都AC了的嘛。。In Reply To:直接用atan算出来的角度排序为什么不对呢。。山东理工的OJ上都AC了的嘛。。 Posted by:bingshen at 2011-02-01 22:52:18 > #include<stdio.h>
> #include<iostream>
> #include<algorithm>
> #include<math.h>
> #define pi 3.14159265358979323846
>
> using namespace std;
>
> struct point
> {
> double x;
> double y;
> double cita;
> };
>
> point pt[10000];
>
> bool cmp(point a,point b)
> {
> return a.cita<b.cita;
> }
>
> int main()
> {
> int n=0,i;
> double x,y,temp;
> while(scanf("%lf%lf",&x,&y)!=EOF)
> {
> pt[n].x=x;
> pt[n].y=y;
> temp=fabs(y/x);
> if(x>0&&y>0)
> pt[n].cita=(atan(temp))/pi*180;
> if(x>0&&y<0)
> pt[n].cita=-(atan(temp))/pi*180;
> if(x<0&&y<0)
> pt[n].cita=(atan(temp))/pi*180-180;
> if(x<0&&y>0)
> pt[n].cita=180-(atan(temp))/pi*180;
> n++;
> }
> sort(pt+1,pt+n,cmp);
> for(i=0;i<n;i++)
> cout<<"("<<pt[i].x<<","<<pt[i].y<<")"<<endl;
> //","<<pt[i].cita<<
> return 0;
> }
Followed by:
Post your reply here: |
All Rights Reserved 2003-2013 Ying Fuchen,Xu Pengcheng,Xie Di
Any problem, Please Contact Administrator