中北大學(xué)C語(yǔ)言課程設(shè)計(jì)《計(jì)算四邊形面積》_第1頁(yè)
中北大學(xué)C語(yǔ)言課程設(shè)計(jì)《計(jì)算四邊形面積》_第2頁(yè)
中北大學(xué)C語(yǔ)言課程設(shè)計(jì)《計(jì)算四邊形面積》_第3頁(yè)
中北大學(xué)C語(yǔ)言課程設(shè)計(jì)《計(jì)算四邊形面積》_第4頁(yè)
中北大學(xué)C語(yǔ)言課程設(shè)計(jì)《計(jì)算四邊形面積》_第5頁(yè)
已閱讀5頁(yè),還剩8頁(yè)未讀 繼續(xù)免費(fèi)閱讀

下載本文檔

版權(quán)說(shuō)明:本文檔由用戶(hù)提供并上傳,收益歸屬內(nèi)容提供方,若內(nèi)容存在侵權(quán),請(qǐng)進(jìn)行舉報(bào)或認(rèn)領(lǐng)

文檔簡(jiǎn)介

1、 中 北 大 學(xué)課程設(shè)計(jì)說(shuō)明書(shū)學(xué) 院、系:軟件學(xué)院專(zhuān) 業(yè):軟件工程學(xué) 生 姓 名:學(xué) 號(hào):1221011319設(shè) 計(jì) 題 目:四邊形計(jì)算 起 迄 日 期: 2013年10月11日2013年11月16日指 導(dǎo) 教 師:李華玲日期: 2013年11月16日1 設(shè)計(jì)目的 .2 任務(wù)概述 .3 模塊劃分 .4 主要函數(shù)說(shuō)明及其N(xiāo)-S圖 .5 程序運(yùn)行數(shù)據(jù)及其結(jié)果 .6 程序設(shè)計(jì)心得 .7 附錄(代碼) .1 設(shè)計(jì)目的 (1)進(jìn)一步鞏固和復(fù)習(xí)C程序設(shè)計(jì)的基礎(chǔ)知識(shí); (2)培養(yǎng)學(xué)生結(jié)構(gòu)化程序、模塊化程序設(shè)計(jì)的方法和能力; (3)了解軟件的編制過(guò)程及各環(huán)節(jié)的具體內(nèi)容; (4) 提高程序調(diào)試技巧、軟件設(shè)計(jì)能力

2、和代碼規(guī)范化等素質(zhì);提高分析問(wèn)題、解決問(wèn)題以及實(shí)際運(yùn)用能力。2 任務(wù)概述用C程序語(yǔ)言編寫(xiě)源程序來(lái)驗(yàn)證計(jì)算四邊形,要求:1) 在屏幕上能夠手動(dòng)輸入待計(jì)算的四邊形各邊邊長(zhǎng),頂點(diǎn)、對(duì)角線(xiàn)上各點(diǎn)及延長(zhǎng)線(xiàn)的交點(diǎn)的名稱(chēng);2) 輸入完成后通過(guò)選擇后,可以通過(guò)編寫(xiě)的程序驗(yàn)證三角形RMN的面積是四邊形ABCD面積的四分之一;3) 將驗(yàn)證結(jié)果顯示在屏幕上。4) 驗(yàn)收時(shí)程序能夠演示,自己?jiǎn)为?dú)做。3 模塊劃分主函數(shù)計(jì)算三角形面積的函數(shù)計(jì)算兩直線(xiàn)交點(diǎn)的函數(shù)初步檢測(cè)四邊形的函數(shù)計(jì)算兩點(diǎn)間距離大函數(shù)4 主要函數(shù)說(shuō)明及其N(xiāo)-S圖( 1)首先根據(jù)提示從鍵盤(pán)手動(dòng)輸入四個(gè)定點(diǎn)的坐標(biāo),調(diào)用“初步檢測(cè)四邊形函數(shù)”檢查輸入的點(diǎn)是否可用,

3、如果有重合在一起的點(diǎn)或AB與CD近乎平行,則異常結(jié)束。(2)其次,推算M、N兩個(gè)“中點(diǎn)”的坐標(biāo),并且調(diào)用求交點(diǎn)函數(shù)計(jì)算BA與CD延長(zhǎng)后的交點(diǎn)r的坐標(biāo)。(3)接著,調(diào)用“計(jì)算三角形面積的函數(shù)”分別算出四邊形abcd和三角形的mnr的面積。計(jì)算四邊形abcd面積的時(shí)候,需要檢測(cè)該四邊形是否為凹四邊形,如是,則異常結(jié)束,必要地,計(jì)算三角形面積的時(shí)候需要調(diào)用“計(jì)算兩點(diǎn)間線(xiàn)段距離的函數(shù)”。(4)最后,計(jì)算四邊形abcd和三角形的mnr的面積之比,并輸出結(jié)果。開(kāi)始定義 pname=ABCD,*p=pname, Point m,n,r,P4,*PP=P, double abcd,rmn,abcd1!ok(P

4、)Y N*p printf(input (x,y) of point %c:,*p)scanf(%lf%*c%lf,&PP-x,&PP-yp+pp+fprintf(stderr,invalid input.nn)exit(1)m.x = (a.x+c.x)/2m.y = (a.y+c.y)/2n.x = (b.x+d.x)/2n.y = (b.y+d.y)/2r= pointOfIntersection()abcd = area_of_triangle(a,b,c) + area_of_triangle(a,d,c)abcd1= area_of_triangle(a,b,d) + area_o

5、f_triangle(b,d,c)fabs(abcd1-abcd)EPSY Nfprintf(stderr,凹四邊形!不行!nn) exit(2)rmn = area_of_triangle(r,m,n)printf(as a resultnABCD:RMN=%4.2f:%4.2f=%4.2fn ,abcd,rmn,abcd/rmn); 圖1-1主函數(shù)main()定義side4,i,j定義tj=(i+1)%4t=length(&pi,&pj)fabs(t)EPS)YNsidei=treturn 0定義k1,k2for(i=0;i4;i+)k1=(p1.y-p0.y)/(p1.x-p0.x)k2

6、=(p3.y-p2.y)/(p3.x-p2.x)if(fabs(k2-k1)x-B-x,2)+pow(A-y-B-y,2)圖1-4計(jì)算兩點(diǎn)間直線(xiàn)距離函數(shù)length()開(kāi)始定義cdx,cdy,abx,aby,dax,day, del,du,dv;cdx = c.x-d.xcdy = c.y-d.yabx = a.x-b.xaby = a.y-b.y;dax = d.x-a.xday = d.y-a.ydel = cdx*aby-cdy*abx;du = dax*aby-day*abx;dv = cdx*day-cdy*dax;du /= dedv /= delr.x = d.x-du*cdxr

7、.y = d.y-du*cdyreture r圖1-5計(jì)算交點(diǎn)坐標(biāo)的函數(shù)pointOfIntersection ()5 程序運(yùn)行數(shù)據(jù)及其結(jié)果 四邊形與三角形面積之比4:1點(diǎn)重合AB與CD平行四邊形是凹四邊形6 程序設(shè)計(jì)心得 這次的課程設(shè)計(jì)實(shí)驗(yàn)是對(duì)我們進(jìn)入大學(xué)以來(lái)學(xué)習(xí)C語(yǔ)言結(jié)果的一次考驗(yàn),作為軟件專(zhuān)業(yè)的學(xué)生來(lái)說(shuō),掌握軟件開(kāi)發(fā)技術(shù)是十分重要的,而C語(yǔ)言又是最常見(jiàn),功能最強(qiáng)大的一種高級(jí)語(yǔ)言,因此做好C語(yǔ)言課程設(shè)計(jì)是十分必要的。 通過(guò)這次課程設(shè)計(jì),不僅重溫了C語(yǔ)言的知識(shí),而且還強(qiáng)化了對(duì)C程序的運(yùn)行和測(cè)試。比如,當(dāng)用到定義點(diǎn)的變量時(shí),用到了結(jié)構(gòu)體的定義和新類(lèi)型的定義,知道了怎樣用typedef來(lái)定義新的

8、類(lèi)型名,在編程過(guò)程中,用到了基本類(lèi)型有int、char,用到常用運(yùn)算符及其表達(dá)式,賦值,算術(shù),邏輯,還有順序結(jié)構(gòu)。C語(yǔ)言程序有很多難點(diǎn),例如數(shù)組、指針、結(jié)構(gòu)體,但重點(diǎn)也是它們,只有經(jīng)過(guò)多次應(yīng)用,才能夠牢牢掌握它們。 編好程序之后,要在電腦上運(yùn)行,運(yùn)行時(shí),電腦會(huì)給你指出代碼中的錯(cuò)誤,有時(shí)候是一些標(biāo)示符的錯(cuò)誤應(yīng)用,有時(shí)候是代碼編寫(xiě)格式錯(cuò)誤,反反復(fù)復(fù),等到把程序調(diào)到能夠運(yùn)行了,你會(huì)發(fā)現(xiàn),在這個(gè)過(guò)程中,有很多自己忽略的小知識(shí)點(diǎn),自己把它改正,這就是經(jīng)驗(yàn),不僅復(fù)習(xí)了知識(shí),還得到了提高,我覺(jué)得這就是課程設(shè)計(jì)的目的。7 附錄(代碼) #include#include#include#define EPS 1

9、e-10typedef struct double x; double y; Point;/*兩點(diǎn)之間的直線(xiàn)距離*/double length(Point *A,Point *B) return sqrt(pow(A-x-B-x,2)+pow(A-y-B-y,2);double area_of_triangle(Point A,Point B,Point C) double area,a,b,c,p; a=length(&B,&C); b=length(&C,&A); c=length(&A,&B); p=(a+b+c)/2; area=sqrt(p*(p-a)*(p-b)*(p-c); re

10、turn area;/*初步檢測(cè)四邊形*/int ok(Point *p) double side4;/*4邊長(zhǎng)*/ int i,j; for(i=0; i4; i+) double t; j=(i+1)%4; t=length(&pi,&pj); if(fabs(t)EPS)return 0; /*不允許有重合在一起的點(diǎn)*/ sidei=t; double k1,k2;/*斜率*/ k1=(p1.y-p0.y)/(p1.x-p0.x); k2=(p3.y-p2.y)/(p3.x-p2.x); if(fabs(k2-k1)x,&PP-y); p+; PP+; /*至此得到四邊形的4個(gè)頂點(diǎn)的坐標(biāo)

11、*/ if(!ok(P)/*如果AB/CD則無(wú)法相交只好退出*/ fprintf(stderr,invalid input.nn); exit(1); /*異常結(jié)束1*/ /*推算M、N兩個(gè)“中點(diǎn)”的坐標(biāo)*/ m.x = (a.x+c.x)/2; m.y = (a.y+c.y)/2; n.x = (b.x+d.x)/2; n.y = (b.y+d.y)/2; r = pointOfIntersection(a,b,c,d);/調(diào)用求交點(diǎn)函數(shù),并將求出的點(diǎn)賦值給r /*這里計(jì)算四邊形ABCD的面積*/ abcd = area_of_triangle(a,b,c) + area_of_triangle(a,d,c); /*補(bǔ)充檢測(cè)四邊形,看它的凹凸性*/ abcd1= area_of_triangle(a,b,d) + area_of_triangle(b,d,c); if(fabs(abcd1-abcd)EPS) fprintf

溫馨提示

  • 1. 本站所有資源如無(wú)特殊說(shuō)明,都需要本地電腦安裝OFFICE2007和PDF閱讀器。圖紙軟件為CAD,CAXA,PROE,UG,SolidWorks等.壓縮文件請(qǐng)下載最新的WinRAR軟件解壓。
  • 2. 本站的文檔不包含任何第三方提供的附件圖紙等,如果需要附件,請(qǐng)聯(lián)系上傳者。文件的所有權(quán)益歸上傳用戶(hù)所有。
  • 3. 本站RAR壓縮包中若帶圖紙,網(wǎng)頁(yè)內(nèi)容里面會(huì)有圖紙預(yù)覽,若沒(méi)有圖紙預(yù)覽就沒(méi)有圖紙。
  • 4. 未經(jīng)權(quán)益所有人同意不得將文件中的內(nèi)容挪作商業(yè)或盈利用途。
  • 5. 人人文庫(kù)網(wǎng)僅提供信息存儲(chǔ)空間,僅對(duì)用戶(hù)上傳內(nèi)容的表現(xiàn)方式做保護(hù)處理,對(duì)用戶(hù)上傳分享的文檔內(nèi)容本身不做任何修改或編輯,并不能對(duì)任何下載內(nèi)容負(fù)責(zé)。
  • 6. 下載文件中如有侵權(quán)或不適當(dāng)內(nèi)容,請(qǐng)與我們聯(lián)系,我們立即糾正。
  • 7. 本站不保證下載資源的準(zhǔn)確性、安全性和完整性, 同時(shí)也不承擔(dān)用戶(hù)因使用這些下載資源對(duì)自己和他人造成任何形式的傷害或損失。

最新文檔

評(píng)論

0/150

提交評(píng)論