




版權(quán)說(shuō)明:本文檔由用戶提供并上傳,收益歸屬內(nèi)容提供方,若內(nèi)容存在侵權(quán),請(qǐng)進(jìn)行舉報(bào)或認(rèn)領(lǐng)
文檔簡(jiǎn)介
數(shù)據(jù)結(jié)構(gòu)課程設(shè)計(jì)數(shù)據(jù)結(jié)構(gòu)課程設(shè)計(jì)/NUMPAGES47數(shù)據(jù)結(jié)構(gòu)課程設(shè)計(jì)數(shù)據(jù)結(jié)構(gòu)課程設(shè)計(jì)《數(shù)據(jù)結(jié)構(gòu)》課程設(shè)計(jì)報(bào)告書題目:文本文件單詞的檢索與計(jì)數(shù)專業(yè):網(wǎng)絡(luò)工程學(xué)號(hào):131007137學(xué)生姓名:張欽昆指導(dǎo)教師:王初陽(yáng)完成日期:2014/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),因?yàn)閏中數(shù)組下標(biāo)是從0開始,串中序號(hào)相差1*/ j=0;/*掃描s2的開始下標(biāo)*/ while(i<s1.length&&j<s2.length) { if(s1.ch[i]==s2.ch[j]) { i++;j++;/*繼續(xù)使下標(biāo)移向下一個(gè)字符位置*/ } else { i=i-j+1;j=0; } } if(j>=s2.length) returni-s2.length;/*表示s1中存在s2,返回其起始位置*/ else return-1;/*表示s1中不存在s2,返回-1*/ }/*函數(shù)結(jié)束*/ voidsubstrcount() { FILE*fp; strings,t;/*定義兩個(gè)串變量*/ charfname[10];inti=0,j,k; printf("輸入文本文件名:"); scanf("%s",fname); fp=fopen(fname,"r"); printf("輸入要統(tǒng)計(jì)計(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;/*初始化開始檢索位置*/ 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在文本文件%s中共出現(xiàn)%d次\n",t.ch,fname,i);/*統(tǒng)計(jì)單詞出現(xiàn)的個(gè)數(shù)*/ } voidsubstrint() { FILE*fp; strings,t;/*定義兩個(gè)串變量*/ charfname[10]; inti,j,k,l,m; intwz[20];/*存放一行中字串匹配的多個(gè)位置*/ printf("輸入文本文件名:"); 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è)文本文件*/ { memset(s.ch,'\0',110); fgets(s.ch,110,fp); s.length=strlen(s.ch); l++;/*行計(jì)數(shù)器自增1*/ k=0;/*初始化開始檢索位置*/ 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"); }/*檢索單詞出現(xiàn)在文本文件中的行號(hào)、次數(shù)及其位置*/ voidsubstrio() { voidsubstrcount(),substrint(); chart; while(1) { printf("===============================================\n"); printf("請(qǐng)輸入:"); printf("||文本文件單詞字串的定位統(tǒng)計(jì)及定位||\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("||文本文件的檢索、字串的統(tǒng)計(jì)及定位||\n"); printf("||===========================================||\n"); printf("||1.建立文本文件||\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問題分析與回顧問題1:在語(yǔ)句“請(qǐng)輸入一行文本”后邊,只寫一句接受語(yǔ)句,結(jié)果運(yùn)行時(shí),請(qǐng)輸入文本和結(jié)束輸入嗎?演示在一起,并且不能接受文本輸入。解決:和同學(xué)討論后,加入了文本接受語(yǔ)句,成功運(yùn)行。問題2:當(dāng)要檢索文本時(shí),輸入為空,或輸入非建立的文本文件名,系統(tǒng)不能正常運(yùn)行。分析:缺少判斷語(yǔ)句。解決:當(dāng)出現(xiàn)這種情況時(shí),系統(tǒng)提示輸入錯(cuò)誤,請(qǐng)重新輸入。4.2算法時(shí)空分析確定給定單詞出現(xiàn)的個(gè)數(shù),需要統(tǒng)計(jì)文本文件中全部的單詞,因此時(shí)間復(fù)雜度為O(n);確定給定單詞出現(xiàn)的位置,需要顯示其所在的行和列,時(shí)間復(fù)雜度為O(i*l);4.3算法改進(jìn)此算法雖然基本實(shí)現(xiàn)了功能,但卻仍存在許多不足,例如當(dāng)當(dāng)前建立的文件名與之前相同時(shí),沒有錯(cuò)誤提示,另如在對(duì)單詞的檢索方面,時(shí)間復(fù)雜度及空間復(fù)雜度仍不盡如人意。仍需要改進(jìn)代碼,達(dá)到算法的高效性。4.4經(jīng)驗(yàn)和體會(huì)通過(guò)本次數(shù)據(jù)結(jié)構(gòu)的課程設(shè)計(jì),讓我對(duì)數(shù)據(jù)結(jié)構(gòu)這門課有了更加深刻的認(rèn)識(shí)。數(shù)據(jù)結(jié)構(gòu)這門課程的理論性只是較強(qiáng),要學(xué)好這門課程,就必要在掌握好理論知識(shí)的同時(shí),加強(qiáng)上機(jī)操作,遇到問題,解決問題,這樣才會(huì)有更大的進(jìn)步。我課程設(shè)計(jì)的題目是文件文本的檢索與計(jì)數(shù),由于這個(gè)課題要用到串的知識(shí)。而我對(duì)之前對(duì)串的定義卻不是很明確,于是我有詳細(xì)的學(xué)習(xí)了課本上的知識(shí)并查閱了很多文獻(xiàn)。在著手作
溫馨提示
- 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ì)自己和他人造成任何形式的傷害或損失。
最新文檔
- 姨媽巾自助販賣機(jī)創(chuàng)業(yè)計(jì)劃
- 云南民族大學(xué)附中2025屆高三最后一?;瘜W(xué)試題含解析
- 學(xué)校食堂操作流程培訓(xùn)
- 湖南省邵東市振華中學(xué)2024-2025學(xué)年高一下學(xué)期3月階段性檢測(cè)地理試題(含答案)
- 2025年江西省中考化學(xué)模擬預(yù)測(cè)卷(5)(含答案)
- 北京市師范大學(xué)附屬中學(xué)2025屆高三第三次模擬考試化學(xué)試卷含解析
- 2025年硅-鋁絲材項(xiàng)目發(fā)展計(jì)劃
- 吉林省長(zhǎng)春市外國(guó)語(yǔ)學(xué)校2025屆高考化學(xué)全真模擬密押卷含解析
- 2025年實(shí)驗(yàn)儀器裝置項(xiàng)目建議書
- 2025年茶及飲料原料項(xiàng)目建議書
- (一模)2025年廣東省高三高考模擬測(cè)試 (一) 英語(yǔ)試卷(含官方答案及詳解)
- 退役軍人無(wú)人機(jī)培訓(xùn)宣傳
- 退役軍人保密教育
- DB44∕T 370-2006 東風(fēng)螺養(yǎng)殖技術(shù)規(guī)范繁殖與苗種培育技術(shù)
- 7.1我國(guó)法治建設(shè)的歷程 課件高中政治統(tǒng)編版必修三政治與法治
- 2025年仲裁法考試試題及答案
- 2025年電梯修理作業(yè)證理論考試練習(xí)題(100題)含答案
- 交通運(yùn)輸部南海航海保障中心推遲公開招聘筆試高頻重點(diǎn)模擬試卷提升(共500題附帶答案詳解)
- T-ZJWL 001-2024 大宗商品供應(yīng)鏈金融動(dòng)產(chǎn)質(zhì)押監(jiān)管倉(cāng)儲(chǔ)服務(wù)規(guī)范
- 交通運(yùn)輸行業(yè)股權(quán)分配方案
- 中試平臺(tái)管理制度
評(píng)論
0/150
提交評(píng)論