版權(quán)說(shuō)明:本文檔由用戶提供并上傳,收益歸屬內(nèi)容提供方,若內(nèi)容存在侵權(quán),請(qǐng)進(jìn)行舉報(bào)或認(rèn)領(lǐng)
文檔簡(jiǎn)介
《數(shù)據(jù)構(gòu)造》課程設(shè)計(jì)報(bào)告書(shū)題目:文本文獻(xiàn)單詞檢索與計(jì)數(shù)專(zhuān)業(yè):網(wǎng)絡(luò)工程學(xué)號(hào):學(xué)生姓名:張欽昆指引教師:王初陽(yáng)完畢日期:/6/7目錄TOC\o"1-3"\h\u單詞 個(gè)數(shù)\n"); for(i=0;i<sq.length;i++) {x=strlen(et[i].word); for(w=x-1;w>=0;w--) if(et[i].word[w]<65||(et[i].word[w]>90&&et[i].word[w]<97)||et[i].word[w]>122) { et[i].word[w]=''; } for(w=0;w<x;w++) if(et[i].word[w]=='') y++; if(y==x) { et[i].count=0; y=0; } elsey=0; if(et[i].count!=0) printf("%20s%10d\n",et[i].word,et[i].count); elseq++; } j=sqlist_count(&sq,et);printf("\n%s單詞總數(shù)為%d個(gè)\n",file_name,j); printf("\n%s非單詞個(gè)數(shù)為%d種\n",file_name,q); printf("\n");} intpartposition(strings1,strings2,intk) { inti,j; i=k-1;/*掃描s1下標(biāo),由于c中數(shù)組下標(biāo)是從0開(kāi)始,串中序號(hào)相差1*/ j=0;/*掃描s2開(kāi)始下標(biāo)*/ while(i<s1.length&&j<s2.length) { if(s1.ch[i]==s2.ch[j]) { i++;j++;/*繼續(xù)使下標(biāo)移向下一種字符位置*/ } else { i=i-j+1;j=0; } } if(j>=s2.length) returni-s2.length;/*表達(dá)s1中存在s2,返回其起始位置*/ else return-1;/*表達(dá)s1中不存在s2,返回-1*/ }/*函數(shù)結(jié)束*/ voidsubstrcount() { FILE*fp; strings,t;/*定義兩個(gè)串變量*/ charfname[10];inti=0,j,k; printf("輸入文本文獻(xiàn)名:"); scanf("%s",fname); fp=fopen(fname,"r"); printf("輸入要記錄計(jì)數(shù)單詞:"); scanf("%s",t.ch); t.length=strlen(t.ch); while(!feof(fp)) { memset(s.ch,'\0',110); fgets(s.ch,110,fp); s.length=strlen(s.ch); k=0;/*初始化開(kāi)始檢索位置*/ while(k<s.length-1)/*檢索整個(gè)主串S*/ { j=partposition(s,t,k);/*調(diào)用串匹配函數(shù)*/ if(j<0)break; else { i++;/*單詞計(jì)數(shù)器加1*/k=j+t.length;/*繼續(xù)下一字串檢索*/ } } } printf("\n單詞%s在文本文獻(xiàn)%s中共浮現(xiàn)%d次\n",t.ch,fname,i);/*記錄單詞浮現(xiàn)個(gè)數(shù)*/ } voidsubstrint() { FILE*fp; strings,t;/*定義兩個(gè)串變量*/ charfname[10]; inti,j,k,l,m; intwz[20];/*存儲(chǔ)一行中字串匹配各種位置*/ printf("輸入文本文獻(xiàn)名:"); scanf("%s",fname); fp=fopen(fname,"r"); printf("輸入要檢索單詞:"); scanf("%s",t.ch); t.length=strlen(t.ch); l=0;/*行計(jì)數(shù)器置0*/ while(!feof(fp))/*掃描整個(gè)文本文獻(xiàn)*/ { memset(s.ch,'\0',110); fgets(s.ch,110,fp); s.length=strlen(s.ch); l++;/*行計(jì)數(shù)器自增1*/ k=0;/*初始化開(kāi)始檢索位置*/ i=0;/*初始化單詞計(jì)數(shù)器*/ while(k<s.length-1)/*檢索整個(gè)主串S*/ { j=partposition(s,t,k);/*調(diào)用串匹配函數(shù)*/ if(j<0)break; else { i++;/*單詞計(jì)數(shù)器加1*/ wz[i]=j;/*記錄匹配單詞位置*/ k=j+t.length;/*繼續(xù)下一字串檢索*/ } } if(i>0) { printf("行號(hào):%d,次數(shù):%d,位置分別為:",l,i); for(m=1;m<=i;m++) printf("第%4d個(gè)字符",wz[m]+1); } printf("\n"); } printf("\n本軟件自定義110個(gè)字節(jié)為一行\(zhòng)n\n"); }/*檢索單詞出當(dāng)前文本文獻(xiàn)中行號(hào)、次數(shù)及其位置*/ voidsubstrio() { voidsubstrcount(),substrint(); chart; while(1) { printf("===============================================\n"); printf("請(qǐng)輸入:"); printf("||文本文獻(xiàn)單詞字串定位記錄及定位||\n"); printf("||===================================||\n"); printf("||a.單詞浮現(xiàn)次數(shù)||\n"); printf("||||\n"); printf("||||\n"); printf("||b.單詞浮現(xiàn)位置||\n"); printf("||||\n"); printf("====================================\n"); scanf("%c",&t); switch(t) { case'a':substrcount(); break; case'b':substrint(); break; default:return; } } } intmain() { voidcreat_text_file(),substrsum(),substrio(); intxz; while(1) { printf("===============================================\n"); printf("||文本文獻(xiàn)檢索、字串記錄及定位||\n"); printf("||===========================================||\n"); printf("||1.建立文本文獻(xiàn)||\n"); printf("||2.單詞字串計(jì)數(shù)||\n"); printf("||3.單詞字串定位||\n"); printf("||4.退出整個(gè)程序||\n"); printf("===============================================\n"); printf("請(qǐng)選取(1--4)\n"); scanf("%d",&xz); switch(xz) { case1:creat_text_file(); break; case2:substrsum(); break; case3:substrio(); break; case4:return0; default:printf("選取錯(cuò)誤,重新選\n"); } } return0; }4調(diào)試分析4.1問(wèn)題分析與回顧問(wèn)題1:在語(yǔ)句“請(qǐng)輸入一行文本”后邊,只寫(xiě)一句接受語(yǔ)句,成果運(yùn)營(yíng)時(shí),請(qǐng)輸入文本和結(jié)束輸入嗎?演示在一起,并且不能接受文本輸入。解決:和同窗討論后,加入了文本接受語(yǔ)句,成功運(yùn)營(yíng)。問(wèn)題2:當(dāng)要檢索文本時(shí),輸入為空,或輸入非建立文本文獻(xiàn)名,系統(tǒng)不能正常運(yùn)營(yíng)。分析:缺少判斷語(yǔ)句。解決:當(dāng)浮現(xiàn)這種狀況時(shí),系統(tǒng)提示輸入錯(cuò)誤,請(qǐng)重新輸入。4.2算法時(shí)空分析擬定給定單詞浮現(xiàn)個(gè)數(shù),需要記錄文本文獻(xiàn)中所有單詞,因而時(shí)間復(fù)雜度為O(n);擬定給定單詞浮現(xiàn)位置,需要顯示其所在行和列,時(shí)間復(fù)雜度為O(i*l);4.3算法改進(jìn)此算法雖然基本實(shí)現(xiàn)了功能,但卻仍存在許多局限性,例如當(dāng)當(dāng)前建立文獻(xiàn)名與之前相似時(shí),沒(méi)有錯(cuò)誤提示,另如在對(duì)單詞檢索方面,時(shí)間復(fù)雜度及空間復(fù)雜度仍不盡如人意。仍需要改進(jìn)代碼,達(dá)到算法高效性。4.4經(jīng)驗(yàn)和體會(huì)通過(guò)本次數(shù)據(jù)構(gòu)造課程設(shè)計(jì),讓我對(duì)數(shù)據(jù)構(gòu)造這門(mén)課有了更加深刻結(jié)識(shí)。數(shù)據(jù)構(gòu)造這門(mén)課程理論性只是較強(qiáng),要學(xué)好這門(mén)課程,就必要在掌握好理論知識(shí)同步,加強(qiáng)上機(jī)操作,遇到問(wèn)題,解決問(wèn)題,這樣才會(huì)有更大進(jìn)步。我課程設(shè)計(jì)題目是文獻(xiàn)文本檢索與計(jì)數(shù),由于這個(gè)課題要用到串知識(shí)。而我對(duì)之前對(duì)串定義卻不是很明確,于是我有詳細(xì)學(xué)習(xí)了課本上知識(shí)并查閱了諸多文獻(xiàn)。在著手作程序過(guò)程中,經(jīng)常遇到程序運(yùn)營(yíng)不出來(lái),運(yùn)營(yíng)達(dá)不到效果等問(wèn)題,特別是接受文本,搜索時(shí)如何定位等方面遇到了諸多問(wèn)題。但我通過(guò)請(qǐng)教教師和同窗,查閱文獻(xiàn),然后基本上解決了這些問(wèn)題。在這個(gè)過(guò)程中我學(xué)到了諸多,我結(jié)識(shí)到了堅(jiān)持不懈重要性,在我一遍一遍調(diào)試下,終于成功寫(xiě)出了程序。在編寫(xiě)本次程序時(shí),我學(xué)會(huì)了先用流程圖對(duì)進(jìn)行算法分析,這樣是自己思路更加清晰,而不是像之前那樣對(duì)整個(gè)函數(shù)沒(méi)有整體認(rèn)知,而導(dǎo)致經(jīng)常無(wú)從下手。之前我對(duì)數(shù)據(jù)構(gòu)造各種算法都感到畏懼,感覺(jué)很抽象,而這次通過(guò)自己幾周努力,在教師和同窗們協(xié)助下,終于完畢了本次課程設(shè)計(jì),這對(duì)我來(lái)說(shuō)無(wú)疑是極大鼓舞,極大增強(qiáng)了我學(xué)數(shù)據(jù)構(gòu)造自信心。并且我也充分結(jié)識(shí)到數(shù)據(jù)構(gòu)造自身就是一門(mén)實(shí)踐性很強(qiáng)課程,只有加強(qiáng)實(shí)踐,才干學(xué)得更好!5測(cè)試成果輸入建立文獻(xiàn)名如圖5所示為輸入建立文獻(xiàn)測(cè)試圖5輸入建立文獻(xiàn)測(cè)試輸入一行文本測(cè)試如圖6所示建立一行文本,建立文獻(xiàn)結(jié)束界面。圖6建立文獻(xiàn)結(jié)束測(cè)試(3) 單詞字串計(jì)數(shù)測(cè)試如圖7,單詞字串計(jì)數(shù)測(cè)試界面。圖7單詞字串計(jì)數(shù)測(cè)試(4)單詞字串定位測(cè)試如圖8和圖9所示。圖8單詞字串定位測(cè)試圖9單詞字串定位測(cè)試(5)程序結(jié)束退出,如圖10所示圖10程序結(jié)束退出參照文獻(xiàn)[1]嚴(yán)蔚敏,吳偉民.?dāng)?shù)據(jù)構(gòu)造(C語(yǔ)言版).北京:清華大學(xué)出版社,.[2]蔣清明,向德生.C語(yǔ)言程序設(shè)計(jì).北京:人民郵電出版社,.[3]尹德淳,龍脈工作室.C函數(shù)速查手冊(cè).北京:人民郵電出版社,.[4]閔敏,朱輝生.《數(shù)據(jù)構(gòu)造》.高等教誨
溫馨提示
- 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ù)覽,若沒(méi)有圖紙預(yù)覽就沒(méi)有圖紙。
- 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ì)自己和他人造成任何形式的傷害或損失。
最新文檔
- 2025江蘇省安全員《A證》考試題庫(kù)
- 靈芝種植產(chǎn)業(yè)基地項(xiàng)目可行性研究報(bào)告-靈芝市場(chǎng)需求持續(xù)擴(kuò)大
- 廣州中醫(yī)藥大學(xué)《試劑生產(chǎn)工藝》2023-2024學(xué)年第一學(xué)期期末試卷
- 2025青海省建筑安全員-B證考試題庫(kù)及答案
- 廣州醫(yī)科大學(xué)《哲學(xué)通論》2023-2024學(xué)年第一學(xué)期期末試卷
- 2025遼寧建筑安全員考試題庫(kù)
- 2025年江蘇建筑安全員考試題庫(kù)及答案
- 2025年-江蘇省安全員《B證》考試題庫(kù)及答案
- 《FOOD中國(guó)飲食文化》課件
- 【語(yǔ)文課件】冀中的地道戰(zhàn)課件
- 你比我猜成語(yǔ)
- 異質(zhì)結(jié)完整分
- 膿毒癥1小時(shí)bundle質(zhì)量控制
- 第7講 高斯光束的聚焦和準(zhǔn)直課件
- 骨科患者術(shù)后疼痛管理的新進(jìn)展
- 小學(xué)生三好學(xué)生競(jìng)選演講稿PPT幻燈片
- 01S201室外消火栓安裝圖集
- 蒸餾酒及配制酒衛(wèi)生檢驗(yàn)原始記錄
- 高一英語(yǔ)外研版必修一(2019)Unit 1 Period 8 Writing-Writing a journal entry(學(xué)案)
- 鉆井HSE作業(yè)風(fēng)險(xiǎn)控制
- S7-200SMARTPLC應(yīng)用技術(shù)PPT完整全套教學(xué)課件
評(píng)論
0/150
提交評(píng)論