爱问知识人 爱问教育 医院库

利用坐标法计算多边形面积程序源代码

首页

利用坐标法计算多边形面积程序源代码

PrivateSubForm1_Load()Label1.Caption="欢迎进入坐标法计算多边形面积程序设计!"Label2.Caption="指导老师:李瑞霞"Label3.Caption="设计者:高大芳"Command1.Caption="进入"Command2.Caption="退出"EndSubPrivateSubCommand1_Click()UnloadForm1Form2.ShowEndSubPrivateSubCommand2_Click()UnloadForm1Form3.ShowEndSub二、面积计算界面Command3为选择文件,Command1为计算,Command2为退出Label2为请输入边数,Label3为输出面积面积计算界面程序原代码如下:PrivateSubForm2_Load()Command3.Caption="选择文件"Command1.Caption="计算"Command2.Caption="退出"Label2.Caption="输入边数"Label3.Caption="输出面积"EndSubPrivateSubCommand3_Click()CommonDialog1.InitDir="C:\windows"CommonDialog1.Filter="文本文件|*.Txt"CommonDialog1.Action=1CommonDialog1.CancelError=TrueLabel1.Caption=CommonDialog1.FileName'把文件中的数据存放于text3中DimstrFilenameAsStringstrFilename=CommonDialog1.FileNameOpenstrFilenameForInputAs#2DoWhileNotEOF(2)inputdata=Input(1,#2)Text3.Text=Text3.Text+inputdataLoopClose#2Exit "放弃操作"ElseLabel1.Caption="其他错误!"EndIfEndSubPrivateSubCommand1_Click()DimssAsIntegerDimxx(100)AsDoubleDimyy(100)AsDoubleDimmm(100)AsDoubless=1DimpAsStringDimc()AsStringp=Replace(Text3,Chr(13),",")c=Split(p,",")Fori=1ToUBound(c)mm(ss)=Val(c(i))ss=ss+1Nexti'-----把点的X坐标从mm()中取出来存于数组xx()中DimtAsIntegert=1Fori=1TossStep1xx(t)=mm(i)t=t+1Nexti'-----把点的Y坐标从mm()中取出来存于数组yy()中DimuAsIntegeru=1Fori=2TossStep1yy(u)=mm(i)u=u+1Nexti'-----计算面积n=Val(Text1.Text)q=0p=0xx(n+1)=xx(1)yy(n+1)=yy(1)Fori=1Tonq=(xx(i+1)+xx(i))*(yy(i+1)-yy(i))/2p=p+qNextiText2.Text=pIfp<0ThenMsgBox"输出错误",vbRetryCancel,"输出面积"EndIfEndSubPrivateSubCommand2_Click()UnloadForm2Form3.ShowEndSub退出界面程序原代码如下:PrivateSubForm3_Load()Label1.Caption="谢谢使用!"Command1.Caption="退出"EndSubPrivateSubCommand1_Click()UnloadForm3EndSub问题补充:输出的面积和手算结果不一样,哪位好心人帮我看看啊,我急用了。问题补充:q=(xx(i+1)+xx(i))*(yy(i+1)-yy(i))/2Q表示面积I表示多边形边数比如说四边形计算公式就是(x1+x2)*(y2-y1)+(x2+x3)*(y3-y2)+(x3+x4)*(y4-y3)+(x4+x1)*(y1-y4)/2

提交回答
好评回答
  • 2008-06-25 13:16:36
      只把form2的有关程序(即面积计算界面程序原代码)调整一下就可以了。如下:'经调试发现,输入组成多边形的各个坐标值的顺序对计算结果有影响。比如计算出来是负数或0,都可能是因为输入的坐标顺序不正确。PrivateSubForm_Load()Command3。
      Caption="选择文件"Command1。Caption="计算"Command2。Caption="退出"Label2。Caption="输入边数"Label3。Caption="输出面积"Label1。Caption=""Text1。
      Text=""'新增本句及以下两句Text2。Text=""Text3。Text=""EndSubPrivateSubCommand3_Click()CommonDialog1。InitDir="C:\windows"CommonDialog1。
      Filter="文本文件|*。Txt"CommonDialog1。Action=1CommonDialog1。CancelError=TrueLabel1。Caption=CommonDialog1。FileName'把文件中的数据存放于text3中DimstrFilenameAsStringstrFilename=CommonDialog1。
      FileNameOpenstrFilenameForInputAs#2DoWhileNotEOF(2)'inputdata=Input(1,#2)改成下句Input#2,inputdata'Text3。Text=Text3。Text+Str(inputdata)改成下句Text3。
      Text=Text3。Text+Str(inputdata)+","LoopClose#2Exit "放弃操作"ElseLabel1。Caption="其他错误!"EndIfEndSubPrivateSubCommand1_Click()DimssAsIntegerDimxx(100)AsDoubleDimyy(100)AsDoubleDimmm(100)AsDouble'ss=1子改成下句ss=0DimpAsStringDimc()AsString'p=Replace(Text3,vbCrLf,",")改成下句p=Text3。
      Textc=Split(p,",")'Fori=1ToUBound(c)改成下句Fori=0ToUBound(c)-1'mm(ss)=Val(c(i))改成下句mm(i)=Val(c(i))ss=ss+1Nextiss=ss-1'增加这一句'-----把点的X坐标从mm()中取出来存于数组xx()中'DimtAsInteger取消变量t't=1Fori=0Toss\2Step1'此句有变动'xx(t)=mm(i)去掉xx(i)=mm(2*i)'此句有变动't=t+1去掉Nexti'-----把点的Y坐标从mm()中取出来存于数组yy()中'DimuAsInteger去掉变量u'u=1去掉Fori=0Toss\2Step1'此句有变动'yy(u)=mm(i)去掉yy(i)=mm(1+2*i)'此句有变动'u=u+1去掉Nexti'-----计算面积n=Val(Text1。
      Text)q=0p=0'xx(n+1)=xx(1)改为下句xx(n)=xx(0)'yy(n+1)=yy(1)改为下句yy(n)=yy(0)'Fori=1Ton改为下句Fori=0Ton-1q=(xx(i+1)+xx(i))*(yy(i+1)-yy(i))/2p=p+qNextiText2。
      Text=pIfp<0ThenMsgBox"输出错误",vbRetryCancel,"输出面积"EndIfEndSubPrivateSubCommand2_Click()UnloadForm2Form3。ShowEndSub。

    浪***

    2008-06-25 13:16:36

类似问题

换一换
  • VB 相关知识

  • 电脑网络技术
  • 电脑网络

相关推荐

正在加载...
最新问答 推荐信息 热门专题 热点推荐
  • 1-20
  • 21-40
  • 41-60
  • 61-80
  • 81-100
  • 101-120
  • 121-140
  • 141-160
  • 161-180
  • 181-200
  • 1-20
  • 21-40
  • 41-60
  • 61-80
  • 81-100
  • 101-120
  • 121-140
  • 141-160
  • 161-180
  • 181-200
  • 1-20
  • 21-40
  • 41-60
  • 61-80
  • 81-100
  • 101-120
  • 121-140
  • 141-160
  • 161-180
  • 181-200
  • 1-20
  • 21-40
  • 41-60
  • 61-80
  • 81-100
  • 101-120
  • 121-140
  • 141-160
  • 161-180
  • 181-200

热点检索

  • 1-20
  • 21-40
  • 41-60
  • 61-80
  • 81-100
  • 101-120
  • 121-140
  • 141-160
  • 161-180
  • 173-192
返回
顶部
帮助 意见
反馈

确定举报此问题

举报原因(必选):