




版權(quán)說(shuō)明:本文檔由用戶提供并上傳,收益歸屬內(nèi)容提供方,若內(nèi)容存在侵權(quán),請(qǐng)進(jìn)行舉報(bào)或認(rèn)領(lǐng)
文檔簡(jiǎn)介
1、 中 北 大 學(xué)課程設(shè)計(jì)說(shuō)明書學(xué) 院、系:軟件學(xué)院專 業(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-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ǔ)言編寫源程序來(lái)驗(yàn)證計(jì)算四邊形,要求:1) 在屏幕上能夠手動(dòng)輸入待計(jì)算的四邊形各邊邊長(zhǎng),頂點(diǎn)、對(duì)角線上各點(diǎn)及延長(zhǎng)線的交點(diǎn)的名稱;2) 輸入完成后通過(guò)選擇后,可以通過(guò)編寫的程序驗(yàn)證三角形RMN的面積是四邊形ABCD面積的四分之一;3) 將驗(yàn)證結(jié)果顯示在屏幕上。4) 驗(yàn)收時(shí)程序能夠演示,自己?jiǎn)为?dú)做。3 模塊劃分主函數(shù)計(jì)算三角形面積的函數(shù)計(jì)算兩直線交點(diǎn)的函數(shù)初步檢測(cè)四邊形的函數(shù)計(jì)算兩點(diǎn)間距離大函數(shù)4 主要函數(shù)說(shuō)明及其N-S圖( 1)首先根據(jù)提示從鍵盤手動(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)間線段距離的函數(shù)”。(4)最后,計(jì)算四邊形abcd和三角形的mnr的面積之比,并輸出結(jié)果。開始定義 pname="ABCD",*p=pname, Point m,n,r,P4,*PP=P, double abcd,rm
4、n,abcd1!ok(P)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)
5、+ area_of_triangle(a,d,c)abcd1= area_of_triangle(a,b,d) + area_of_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=
6、length(&pi,&pj)fabs(t)<EPS)YNsidei=treturn 0定義k1,k2for(i=0;i<4;i+)k1=(p1.y-p0.y)/(p1.x-p0.x)k2=(p3.y-p2.y)/(p3.x-p2.x)if(fabs(k2-k1)<EPS)Y Nreturn 0return 1圖1-2初步檢測(cè)四邊形函數(shù)ok()、開始定義area,a,b,c,pa=length(&B,&C)b=length(&C,&Ac=length(&A,&B)p=(a+b+c)/2area=sqrt(p*(p
7、-a)*(p-b)*(p-c)return area圖1-3計(jì)算三角形面積函數(shù)area_of_triangle()開始return sqrt(pow(A->x-B->x,2)+pow(A->y-B->y,2)圖1-4計(jì)算兩點(diǎn)間直線距離函數(shù)length()開始定義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;
8、dv = cdx*day-cdy*dax;du /= dedv /= delr.x = d.x-du*cdxr.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),作為軟件專業(yè)的學(xué)生來(lái)說(shuō),掌握軟件開發(fā)技術(shù)是十分重要的,而C語(yǔ)言又是最常見,功能最強(qiáng)大的一種高級(jí)語(yǔ)言,因此做好C語(yǔ)言課程設(shè)計(jì)是十分必要的。 通過(guò)這次課程設(shè)計(jì),不僅重溫了C語(yǔ)言的知識(shí),而且還強(qiáng)化了對(duì)C程序的
9、運(yùn)行和測(cè)試。比如,當(dāng)用到定義點(diǎn)的變量時(shí),用到了結(jié)構(gòu)體的定義和新類型的定義,知道了怎樣用typedef來(lái)定義新的類型名,在編程過(guò)程中,用到了基本類型有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í)候是代碼編寫格式錯(cuò)誤,反反復(fù)復(fù),等到把程序調(diào)到能夠運(yùn)行了,你會(huì)發(fā)現(xiàn),在這個(gè)過(guò)程中,有很多自己忽略的小知識(shí)點(diǎn),自己把它改正,這就是經(jīng)驗(yàn),不僅復(fù)習(xí)了知識(shí),還得到了提高,我覺得這就
10、是課程設(shè)計(jì)的目的。7 附錄(代碼) #include<stdio.h>#include<stdlib.h>#include<math.h>#define EPS 1e-10typedef struct double x; double y; Point;/*兩點(diǎ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) do
11、uble 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); return area;/*初步檢測(cè)四邊形*/int ok(Point *p) double side4;/*4邊長(zhǎng)*/ int i,j; for(i=0; i<4; i+) double t; j=(i+1)%4; t=length(&pi,&pj); if(fabs(t)<EPS)retur
12、n 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)<EPS) return 0; /*不允許AB與CD近乎平行*/ return 1;Point pointOfIntersection(Point a,Point c,Point d,Point b)Point r;double cdx,cdy,abx,aby,dax,day, del,du,dv;cdx = c.x-d.x;cdy = c.y-d.y
13、;abx = a.x-b.x;aby = a.y-b.y;dax = d.x-a.x;day = d.y-a.y;del = cdx*aby-cdy*abx;du = dax*aby-day*abx;dv = cdx*day-cdy*dax;du /= del;dv /= del;r.x = d.x-du*cdx;r.y = d.y-du*cdy;return r;/計(jì)算兩直線焦點(diǎn)r#define a P0#define b P1#define c P2#define d P3main() char pname="ABCD",*p=pname; Point m,n,r,P4
14、,*PP=P; double abcd,rmn,abcd1; while(*p) printf("input (x,y) of point %c:",*p); scanf("%lf%*c%lf",&PP->x,&PP->y); p+; PP+; /*至此得到四邊形的4個(gè)頂點(diǎn)的坐標(biāo)*/ 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(
溫馨提示
- 1. 本站所有資源如無(wú)特殊說(shuō)明,都需要本地電腦安裝OFFICE2007和PDF閱讀器。圖紙軟件為CAD,CAXA,PROE,UG,SolidWorks等.壓縮文件請(qǐng)下載最新的WinRAR軟件解壓。
- 2. 本站的文檔不包含任何第三方提供的附件圖紙等,如果需要附件,請(qǐng)聯(lián)系上傳者。文件的所有權(quán)益歸上傳用戶所有。
- 3. 本站RAR壓縮包中若帶圖紙,網(wǎng)頁(yè)內(nèi)容里面會(huì)有圖紙預(yù)覽,若沒有圖紙預(yù)覽就沒有圖紙。
- 4. 未經(jīng)權(quán)益所有人同意不得將文件中的內(nèi)容挪作商業(yè)或盈利用途。
- 5. 人人文庫(kù)網(wǎng)僅提供信息存儲(chǔ)空間,僅對(duì)用戶上傳內(nèi)容的表現(xiàn)方式做保護(hù)處理,對(duì)用戶上傳分享的文檔內(nèi)容本身不做任何修改或編輯,并不能對(duì)任何下載內(nèi)容負(fù)責(zé)。
- 6. 下載文件中如有侵權(quán)或不適當(dāng)內(nèi)容,請(qǐng)與我們聯(lián)系,我們立即糾正。
- 7. 本站不保證下載資源的準(zhǔn)確性、安全性和完整性, 同時(shí)也不承擔(dān)用戶因使用這些下載資源對(duì)自己和他人造成任何形式的傷害或損失。
最新文檔
- 古鎮(zhèn)情懷活動(dòng)方案
- 另類團(tuán)建活動(dòng)方案
- 臺(tái)灣保險(xiǎn)宣傳日活動(dòng)方案
- 右玉紅色活動(dòng)方案
- 各種法治宣傳活動(dòng)方案
- 合唱指揮培訓(xùn)活動(dòng)方案
- 細(xì)菌感染病例分析
- 同唱一首團(tuán)歌活動(dòng)方案
- 同心互愛活動(dòng)方案
- 痣的中醫(yī)護(hù)理常規(guī)
- 2025年湖北省中考數(shù)學(xué)試卷
- 2025年陜西省中考數(shù)學(xué)真題含答案
- 能源站運(yùn)營(yíng)管理制度
- 2025年高考真題-化學(xué)(廣東卷) 含答案
- 2025至2030中國(guó)成人用品行業(yè)產(chǎn)業(yè)運(yùn)行態(tài)勢(shì)及投資規(guī)劃深度研究報(bào)告
- 竹制品企業(yè)可行性報(bào)告
- 公安院校公安學(xué)科專業(yè)招生政治考察表
- 2024年內(nèi)蒙古錫林郭勒職業(yè)學(xué)院招聘真題
- 廣東省深圳市光明區(qū)2023-2024學(xué)年三年級(jí)下冊(cè)期末考試數(shù)學(xué)試卷(含答案)
- 交通設(shè)計(jì)(Traffic Design)知到智慧樹章節(jié)測(cè)試課后答案2024年秋同濟(jì)大學(xué)
- 2025年日歷表(A4版含農(nóng)歷可編輯)
評(píng)論
0/150
提交評(píng)論