- 1、原创力文档(book118)网站文档一经付费(服务费),不意味着购买了该文档的版权,仅供个人/单位学习、研究之用,不得用于商业用途,未经授权,严禁复制、发行、汇编、翻译或者网络传播等,侵权必究。。
- 2、本站所有内容均由合作方或网友上传,本站不对文档的完整性、权威性及其观点立场正确性做任何保证或承诺!文档内容仅供研究参考,付费前请自行鉴别。如您付费,意味着您自己接受本站规则且自行承担风险,本站不退款、不进行额外附加服务;查看《如何避免下载的几个坑》。如果您已付费下载过本站文档,您可以点击 这里二次下载。
- 3、如文档侵犯商业秘密、侵犯著作权、侵犯人身权等,请点击“版权申诉”(推荐),也可以打举报电话:400-050-0827(电话支持时间:9:00-18:30)。
- 4、该文档为VIP文档,如果想要下载,成为VIP会员后,下载免费。
- 5、成为VIP后,下载本文档将扣除1次下载权益。下载后,不支持退款、换文档。如有疑问请联系我们。
- 6、成为VIP后,您将拥有八大权益,权益包括:VIP文档下载权益、阅读免打扰、文档格式转换、高级专利检索、专属身份标志、高级客服、多端互通、版权登记。
- 7、VIP文档为合作方或网友上传,每下载1次, 网站将根据用户上传文档的质量评分、类型等,对文档贡献者给予高额补贴、流量扶持。如果你也想贡献VIP文档。上传文档
查看更多
1805【计算几何】多边形面积
计算几何】多边形面积
Time Limit:1000MS? Memory Limit:65536KTotal Submit:54 Accepted:25
Description
多边形面积(area.pas/c/cpp) 【问题描述】 中学生杰利陶醉于数学研究,他思考的问题对专家而言可能太过简单,但作为一个15岁的中学生来说,他做得非常棒。他太热衷于思考数学问题,以至于轻易就会尝试用数学方法来解决碰到的问题。一天,他看到桌上的一张纸。他四岁的妹妹玛丽在上面画了一些线。那些线恰好构成一个凹多边形,如图1所示。
“棒极了!”他想,“这些多边形看起来是规则的。我曾经学过怎样计算三解形、矩形和圆的面积。我一定能找到计算这些图形面积的方法。”他确实做到了。首先,他标记多边形顶点的坐标,如图2所示。随后,他豪不费力的求得结果----0.75 。
当然,他不会满足于解决这么简单的问题。“嗯,如果纸上面的是一个任意的多边形,我应该怎么计算它的面积呢?”他问自己。可他一直都没有找到计算任意多边形面积的通用方法。他清楚地明白以他的能力无法找到问题的答案。所以他向你请教。他会很感激你好心的帮助。
Input
输入数据的第一行是一个整数n,代表图形的顶点个数 1 N 1000 。 接下来的N行,每行是一对实数,代表图形的顶点的坐标 xi,yi 。每个图形由第一个顶点连接第二个顶点,第二个顶点连接第三个顶点,…,最后第N个顶点连接第一个顶点形成封闭的多边形。
Output
输出图形的面积或字符串“Impossible”。 如果图形是一个多边形,计算它的面积 精确到小数后两位 。如果输入的顶点不能构成一个多边形 也就是说,一条边和另一条不相连的边相交,例如,四条线段的图形,第一条线和第三条线段相交 ,就输出“Impossible”,指出图形不可能是多边形。如果顶点的数量不足以构成一个封闭的多边形,也输出“Impossible”。
Sample Input
样例一
5
0 0
0 1
0.5 0.5
1 1
1 0
样例二
4
0 0
0 1
1 0
1 1
Sample Output
样例一
0.75
样例二
Impossible
Source
var i,j,n:longint;
s,x1,x2,y1,y2:real;
x,y:array[1..1000] of real;
function f x1,x2,x3,x4,y1,y2,y3,y4:real :boolean;
begin if x3-x1 * y2-y1 - y3-y1 * x2-x1 * x4-x1 * y2-y1 - y4-y1 * x2-x1 0 and x1-x3 * y4-y3 - y1-y3 * x4-x3 * x2-x3 * y4-y3 - y2-y3 * x4-x3 0 then exit true else exit false ;
end;
begin readln n ; for i: 1 to n do readln x[i],y[i] ; if n 3 then begin writeln Impossible ; halt; end; for i: 1 to n-2 do for j: i+2 to n do if f x[i],x[i+1],x[j],x[j mod n+1],y[i],y[i+1],y[j],y[j mod n+1] then begin writeln Impossible ; halt; end; for i: 2 to n-1 do begin x1: x[i]-x[1]; y1: y[i]-y[1]; x2: x[i+1]-x[1]; y2: y[i+1]-y[1]; s: s+x1*y2-x2*y1; end; s: abs s/2 ; if s 0.001 then writeln Impossible else writeln s:0:2 ;
end.
您可能关注的文档
最近下载
- 2025-2026学年粤教粤科版(2024)小学科学三年级上册(全册)教学设计(附目录 P182) .docx
- 电机拖动应用技术第2章知识点回顾总结.docx VIP
- 蓝光BL及BL培训总汇讲解.ppt VIP
- Q SY 17816-2021 泡沫驱用起泡剂技术规范.pdf VIP
- SL∕T 619-2021 水利水电工程初步设计报告编制规程.pdf
- 蓝光BL及BL培训总汇演示文稿.ppt VIP
- 第三单元:测量(单元复习课件-)人教版三年级数学上册.pptx VIP
- 巨人通力GPS53K(SIEI)-YH_电气原理图纸G3001007(B)N-2020-12.pdf
- 第1单元第5课《图片的局部处理》课件【滇人版】《信息科技》五年级上册.pptx VIP
- 《物业服务模式》课件.ppt VIP
原创力文档


文档评论(0)