




版權(quán)說明:本文檔由用戶提供并上傳,收益歸屬內(nèi)容提供方,若內(nèi)容存在侵權(quán),請進(jìn)行舉報(bào)或認(rèn)領(lǐng)
文檔簡介
1、 中 北 大 學(xué)課程設(shè)計(jì)說明書學(xué) 院、系:軟件學(xué)院專 業(yè):軟件工程學(xué) 生 姓 名:學(xué) 號:1221011319設(shè) 計(jì) 題 目:四邊形計(jì)算 起 迄 日 期: 2013年10月11日2013年11月16日指 導(dǎo) 教 師:李華玲日期: 2013年11月16日1 設(shè)計(jì)目的 .2 任務(wù)概述 .3 模塊劃分 .4 主要函數(shù)說明及其N-S圖 .5 程序運(yùn)行數(shù)據(jù)及其結(jié)果 .6 程序設(shè)計(jì)心得 .7 附錄(代碼) .1 設(shè)計(jì)目的 (1)進(jìn)一步鞏固和復(fù)習(xí)C程序設(shè)計(jì)的基礎(chǔ)知識; (2)培養(yǎng)學(xué)生結(jié)構(gòu)化程序、模塊化程序設(shè)計(jì)的方法和能力; (3)了解軟件的編制過程及各環(huán)節(jié)的具體內(nèi)容; (4) 提高程序調(diào)試技巧、軟件設(shè)計(jì)能力
2、和代碼規(guī)范化等素質(zhì);提高分析問題、解決問題以及實(shí)際運(yùn)用能力。2 任務(wù)概述用C程序語言編寫源程序來驗(yàn)證計(jì)算四邊形,要求:1) 在屏幕上能夠手動(dòng)輸入待計(jì)算的四邊形各邊邊長,頂點(diǎn)、對角線上各點(diǎn)及延長線的交點(diǎn)的名稱;2) 輸入完成后通過選擇后,可以通過編寫的程序驗(yàn)證三角形RMN的面積是四邊形ABCD面積的四分之一;3) 將驗(yàn)證結(jié)果顯示在屏幕上。4) 驗(yàn)收時(shí)程序能夠演示,自己單獨(dú)做。3 模塊劃分主函數(shù)計(jì)算三角形面積的函數(shù)計(jì)算兩直線交點(diǎn)的函數(shù)初步檢測四邊形的函數(shù)計(jì)算兩點(diǎn)間距離大函數(shù)4 主要函數(shù)說明及其N-S圖( 1)首先根據(jù)提示從鍵盤手動(dòng)輸入四個(gè)定點(diǎn)的坐標(biāo),調(diào)用“初步檢測四邊形函數(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延長后的交點(diǎn)r的坐標(biāo)。(3)接著,調(diào)用“計(jì)算三角形面積的函數(shù)”分別算出四邊形abcd和三角形的mnr的面積。計(jì)算四邊形abcd面積的時(shí)候,需要檢測該四邊形是否為凹四邊形,如是,則異常結(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初步檢測四邊形函數(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)是對我們進(jìn)入大學(xué)以來學(xué)習(xí)C語言結(jié)果的一次考驗(yàn),作為軟件專業(yè)的學(xué)生來說,掌握軟件開發(fā)技術(shù)是十分重要的,而C語言又是最常見,功能最強(qiáng)大的一種高級語言,因此做好C語言課程設(shè)計(jì)是十分必要的。 通過這次課程設(shè)計(jì),不僅重溫了C語言的知識,而且還強(qiáng)化了對C程序的
9、運(yùn)行和測試。比如,當(dāng)用到定義點(diǎn)的變量時(shí),用到了結(jié)構(gòu)體的定義和新類型的定義,知道了怎樣用typedef來定義新的類型名,在編程過程中,用到了基本類型有int、char,用到常用運(yùn)算符及其表達(dá)式,賦值,算術(shù),邏輯,還有順序結(jié)構(gòu)。C語言程序有很多難點(diǎn),例如數(shù)組、指針、結(jié)構(gòu)體,但重點(diǎn)也是它們,只有經(jīng)過多次應(yīng)用,才能夠牢牢掌握它們。 編好程序之后,要在電腦上運(yùn)行,運(yùn)行時(shí),電腦會給你指出代碼中的錯(cuò)誤,有時(shí)候是一些標(biāo)示符的錯(cuò)誤應(yīng)用,有時(shí)候是代碼編寫格式錯(cuò)誤,反反復(fù)復(fù),等到把程序調(diào)到能夠運(yùn)行了,你會發(fā)現(xiàn),在這個(gè)過程中,有很多自己忽略的小知識點(diǎn),自己把它改正,這就是經(jīng)驗(yàn),不僅復(fù)習(xí)了知識,還得到了提高,我覺得這就
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;/*初步檢測四邊形*/int ok(Point *p) double side4;/*4邊長*/ 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則無法相交只好退出*/ 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ǔ)充檢測四邊形,看它的凹凸性*/ abcd1= area_of_triangle(a,b,d) + area_of_triangle(b,d,c); if(
溫馨提示
- 1. 本站所有資源如無特殊說明,都需要本地電腦安裝OFFICE2007和PDF閱讀器。圖紙軟件為CAD,CAXA,PROE,UG,SolidWorks等.壓縮文件請下載最新的WinRAR軟件解壓。
- 2. 本站的文檔不包含任何第三方提供的附件圖紙等,如果需要附件,請聯(lián)系上傳者。文件的所有權(quán)益歸上傳用戶所有。
- 3. 本站RAR壓縮包中若帶圖紙,網(wǎng)頁內(nèi)容里面會有圖紙預(yù)覽,若沒有圖紙預(yù)覽就沒有圖紙。
- 4. 未經(jīng)權(quán)益所有人同意不得將文件中的內(nèi)容挪作商業(yè)或盈利用途。
- 5. 人人文庫網(wǎng)僅提供信息存儲空間,僅對用戶上傳內(nèi)容的表現(xiàn)方式做保護(hù)處理,對用戶上傳分享的文檔內(nèi)容本身不做任何修改或編輯,并不能對任何下載內(nèi)容負(fù)責(zé)。
- 6. 下載文件中如有侵權(quán)或不適當(dāng)內(nèi)容,請與我們聯(lián)系,我們立即糾正。
- 7. 本站不保證下載資源的準(zhǔn)確性、安全性和完整性, 同時(shí)也不承擔(dān)用戶因使用這些下載資源對自己和他人造成任何形式的傷害或損失。
最新文檔
- 設(shè)備檢修倉庫管理制度
- 設(shè)備研發(fā)建設(shè)管理制度
- 設(shè)備設(shè)施變更管理制度
- 設(shè)計(jì)公司會計(jì)管理制度
- 設(shè)計(jì)外委外協(xié)管理制度
- 評估財(cái)務(wù)收款管理制度
- 診所醫(yī)療器具管理制度
- 診所行業(yè)安全管理制度
- 詩詞社團(tuán)工作管理制度
- 財(cái)務(wù)部水電費(fèi)管理制度
- 石油化工行業(yè)檢修工程預(yù)算定額說明
- 2024年電力交易員(中級工)職業(yè)鑒定理論考試題庫-上(單選題)
- 杭州市西湖區(qū)部分校教科版五年級下冊期末檢測科學(xué)試卷(原卷版)
- 醫(yī)院.急救、備用藥品管理和使用及領(lǐng)用、補(bǔ)充管理制度及流程
- 按揭貸款業(yè)務(wù)合作協(xié)議書范本
- 2025年smed快速換模試題及答案
- 2022年11月全國翻譯專業(yè)資格(水平)英語二級筆譯實(shí)務(wù)試題真題及答案
- 現(xiàn)代城市配送中無人配送車的發(fā)展趨勢分析
- 大學(xué)生創(chuàng)業(yè)項(xiàng)目案例路演
- 醫(yī)院感染的器械器材管理
- 安徽省蚌埠市2023-2024學(xué)年高一下學(xué)期7月期末考試 化學(xué) 含解析
評論
0/150
提交評論