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 |
迫切地想知道为什么错了,高手来看一看!#define pi 3.1415926535897932 #include <iostream> #include <cmath> #include <iomanip> using namespace std; int main() { double a,b; double x,y; double x1,y1,x2,y2,x3,y3; double xmax,xmin,ymax,ymin; double angle,ang; double k1,k2; int n,t,i=0; while(1) { cin>>n; if(n==0) break; if(n==1 || n==2 ){ cout<<0.000<<endl; continue; } cin>>x1>>y1>>x2>>y2>>x3>>y3; if(x1==x2) {//如果((x1,y1),(x2,y2))垂直于x轴 if(y2==y2) {x=(x2+x3)/2.0; y=(y1+y2)/2.0; } //如果((x2,y2),(x3,y3))平行于x轴 else {x=(y3-y2)*(y3-y1)/(2.0*(x3-x2)); y=(y1+y2)/2.0; } } else if(y1==y2) {//如果((x1,y1),(x2,y2))平行于x轴 if(x2==x3) {x=(x1+x2)/2.0; y=(y2+y3)/2.0; }//如果((x2,y2),(x3,y3))垂直于x轴 else {x=(x1+x2)/2.0; y=(x3-x2)*(x3-x2)/(2.0*(y3-y2))+(y2+y3)/2.0;} } else { if(y2==y3) {x=(x2+x3)/2.0; y=(x2-x1)*(x1-x3)/(2.0*(y2-y1))+(y1+y2)/2.0;} else if(x2==x3) { x=(y2-y1)*(y1-y3)/(2.0*(x2-x1))+(x1+x2)/2.0; y=(y2+y3)/2.0; } else { k1=(y2-y1)/(x2-x1); k2=(y3-y2)/(x3-x2); x=(k2*(x1+x2))/(2.0*(k2-k1))-(k1*(x2+x3))/(2.0*(k2-k1))+(k1*k2*(y1-y3))/(2.0*(k2-k1)); y=-(x2-x1)*(x-(x1+x2)/2.0)/(y2-y1)+(y1+y2)/2.0; } } //以上是找出多边形的中心 a=x1-x; b=y1-y; //求出向量(a,b) ang=2.0*pi/(1.0*n); xmax=a;xmin=a;ymax=b;ymin=b; for(t=1;t<n;t++) { //逆时针旋转找出x的最大,最小值,找出y的最大,最小值 angle=ang*t; x=a*cos(angle)-b*sin(angle); y=a*sin(angle)+b*cos(angle); if(x>xmax) xmax=x; if(x<xmin) xmin=x; if(y>ymax) ymax=y; if(y<ymin) ymin=y; } ++i; cout<<"Polygon "<<i<<": "; cout<<setprecision(3)<<setiosflags(ios::fixed)<<(ymax-ymin)*(xmax-xmin)<<resetiosflags(ios::fixed)<<endl; } return 0; } Followed by: Post your reply here: |
All Rights Reserved 2003-2013 Ying Fuchen,Xu Pengcheng,Xie Di
Any problem, Please Contact Administrator