文章編輯課程設(shè)計(jì)報(bào)告_第1頁(yè)
已閱讀1頁(yè),還剩29頁(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、<p><b>  實(shí) 驗(yàn) 報(bào) 告</b></p><p><b> ?。ㄕn程設(shè)計(jì))</b></p><p>  課程名稱(chēng): 數(shù)據(jù)結(jié)構(gòu) </p><p>  實(shí)驗(yàn)項(xiàng)目名稱(chēng):文章編輯 <

2、;/p><p>  學(xué)院: 計(jì)算機(jī)與軟件學(xué)院 </p><p>  指導(dǎo)教師: </p><p>  報(bào)告人: </p><p>  實(shí)驗(yàn)時(shí)間 </p><p>  實(shí)驗(yàn)報(bào)告提交時(shí)間:

3、 </p><p><b>  教務(wù)處制</b></p><p><b>  實(shí)驗(yàn)項(xiàng)目名稱(chēng)</b></p><p><b>  一、問(wèn)題描述</b></p><p>  描述算法設(shè)計(jì)的內(nèi)容、約束條件,要求達(dá)到的目標(biāo)等內(nèi)容。(由老師公布)</p>

4、<p>  輸入一頁(yè)文字,每行最多不超過(guò)80個(gè)字符,共N行;</p><p>  程序可以統(tǒng)計(jì)出文字、數(shù)字、空格的個(gè)數(shù)</p><p>  要求在光標(biāo)下(與記事本相似)做插入、刪除等操作</p><p>  要求能夠存盤(pán),并能對(duì)老文件打開(kāi)進(jìn)行修改操作</p><p>  采用的數(shù)據(jù)結(jié)構(gòu)及其算法:線性結(jié)構(gòu)[采用順序存儲(chǔ)方式];查找

5、、插入、刪除</p><p><b>  二、基本要求</b></p><p>  描述算法設(shè)計(jì)項(xiàng)目應(yīng)達(dá)到的基本要求。</p><p>  應(yīng)該實(shí)現(xiàn)基本的刪除插入查找打開(kāi)文件以及存盤(pán)等操作.并能對(duì)打開(kāi)的文件里的內(nèi)容進(jìn)行插入刪除查找等操作,并且在進(jìn)行完這些操作之后能夠進(jìn)行存盤(pán).</p><p><b>  三、分

6、析與實(shí)驗(yàn)</b></p><p>  分析算法設(shè)計(jì)方法,擬采用的數(shù)據(jù)結(jié)構(gòu)(類(lèi)結(jié)構(gòu))與主要算法實(shí)現(xiàn)原理等內(nèi)容。</p><p>  擬采用鏈表進(jìn)行操作,與字符串結(jié)合.</p><p>  主要運(yùn)用了KMP算法進(jìn)行查找操作,在刪除中也有涉及.</p><p>  void GetNext(string p, int next[]) /

7、/求模式串p的next[j]的值</p><p><b>  {</b></p><p>  int j = 0, k = -1;</p><p>  next[0] = -1;</p><p>  int length = p.length() - 1;</p><p>  while (j &

8、lt;length)</p><p><b>  {</b></p><p>  if (k == -1 || p[j] == p[k])</p><p><b>  {</b></p><p><b>  k++;</b></p><p><b&

9、gt;  j++;</b></p><p>  next[j] = k;</p><p><b>  }</b></p><p><b>  else</b></p><p>  k = next[k];</p><p><b>  }</b>

10、;</p><p><b>  }</b></p><p>  int KMPFind(string p, int next[], string q,int search[]) //用KMP算法在主串中查找子串,p為主串,q為子串</p><p><b>  {</b></p><p>  in

11、t i = 0, j = 0, k = 0, plength = p.length(), qlength=q.length(),flag=0,t=0;</p><p>  while (i < plength)</p><p><b>  {</b></p><p>  if (j == -1 || p[i] == q[j])</

12、p><p><b>  {</b></p><p><b>  i++;</b></p><p><b>  j++;</b></p><p><b>  }</b></p><p><b>  else</b>&

13、lt;/p><p>  j = next[j];</p><p>  if (j == qlength)</p><p><b>  {</b></p><p><b>  flag++;</b></p><p>  search[t]= i-qlength;//flag存放的是

14、每一次匹配到的字符的首位置 </p><p><b>  t++;</b></p><p><b>  }</b></p><p><b>  }</b></p><p>  return flag;</p><p><b>  }</b

15、></p><p>  Search[]數(shù)組存放子串出現(xiàn)的位置.</p><p><b>  四、實(shí)驗(yàn)步聚</b></p><p>  詳細(xì)介紹實(shí)驗(yàn)操作步驟(程序流程圖及必要說(shuō)明)。</p><p><b>  五、測(cè)試與結(jié)論</b></p><p>  粘貼算法設(shè)計(jì)程

16、序運(yùn)行的截圖,并加以簡(jiǎn)單文字說(shuō)明。</p><p>  程序運(yùn)行必須覆蓋算法的各種情況,最后說(shuō)明算法設(shè)計(jì)程序是否滿(mǎn)足算法設(shè)計(jì)實(shí)驗(yàn)?zāi)繕?biāo)和要求。</p><p><b>  主界面:</b></p><p>  先打開(kāi)文件進(jìn)行操作:</p><p><b>  刪除操作:</b></p>

17、<p><b>  查找操作:</b></p><p>  查找一個(gè)字符的情況:</p><p>  查找兩個(gè)字符的情況:</p><p>  查找兩個(gè)以上字符的情況:</p><p><b>  刪除操作:</b></p><p><b>  插入操作:

18、</b></p><p><b>  存盤(pán):</b></p><p><b>  退出:</b></p><p>  直接輸入進(jìn)行各種操作:</p><p><b>  查找操作:</b></p><p><b>  插入操作:&l

19、t;/b></p><p><b>  刪除操作:</b></p><p><b>  存盤(pán)操作:</b></p><p>  存盤(pán)的時(shí)候每行存的是80個(gè)字符.</p><p><b>  實(shí)驗(yàn)總結(jié)</b></p><p>  主要說(shuō)明算法的特點(diǎn),

20、特別是重點(diǎn)說(shuō)明獨(dú)創(chuàng)或創(chuàng)新部分,相關(guān)實(shí)驗(yàn)最有價(jià)值的內(nèi)容,在哪些方面需要進(jìn)一步了解或得到幫助,以及編程實(shí)現(xiàn)算法設(shè)計(jì)的感悟等內(nèi)容。</p><p>  剛開(kāi)始做的時(shí)候并沒(méi)有考慮那么多,只是想實(shí)現(xiàn)查找某個(gè)字符出現(xiàn)的次數(shù),但是那樣太簡(jiǎn)單了與實(shí)驗(yàn)?zāi)康牟环?最后用KMP算法實(shí)現(xiàn)各種個(gè)數(shù)的字符的查找,并且在此基礎(chǔ)上進(jìn)行各種操作(刪除),存盤(pán)和打開(kāi)文件的時(shí)候出現(xiàn)一些問(wèn)題,也自行解決了.在此次試驗(yàn)中意識(shí)到數(shù)據(jù)結(jié)構(gòu)算法的靈活性.之前學(xué)

21、的KMP算法是進(jìn)行子串和主串的匹配,沒(méi)有考慮那么多,在此次試驗(yàn)中實(shí)現(xiàn)了多個(gè)循環(huán)過(guò)程,從而達(dá)到實(shí)驗(yàn)?zāi)康?</p><p><b>  程序清單</b></p><p><b>  程序清單如下:</b></p><p>  #include<iostream></p><p>  #inc

22、lude<fstream></p><p>  #include<string></p><p>  #include<cstdlib> </p><p>  #include<conio.h></p><p>  #include <windows.h></p>&

23、lt;p>  using namespace std;</p><p>  #define Max 100000</p><p>  struct LNode </p><p><b>  {</b></p><p>  char data;</p><p>  LNode *next;&

24、lt;/p><p><b>  };</b></p><p>  LNode *LinkList;</p><p>  HANDLE hout;</p><p>  string S ;</p><p>  int sum=0,Punnum=0,Fignum=0,Spacenum=0,English=

25、0; //定義全局變量,統(tǒng)計(jì)數(shù)字字母空格標(biāo)點(diǎn)符號(hào)的個(gè)數(shù)</p><p>  int next[Max]; //定義next數(shù)組</p><p>  int search[Max];</p><p>  LNode *SearchLinkList(LNode *L,int posnum) //查找位置</p><p><b> 

26、 {</b></p><p><b>  int j;</b></p><p><b>  LNode *p;</b></p><p><b>  p=L;</b></p><p><b>  j=1;</b></p><p

27、>  while(p && j<posnum)</p><p><b>  {</b></p><p>  p=p->next ;</p><p><b>  j++;</b></p><p><b>  }</b></p>&l

28、t;p>  if(!p || j>posnum)</p><p>  return NULL;</p><p>  return (p);</p><p><b>  }</b></p><p>  int Search(LNode *L,char item) //查找元素</p><p

29、><b>  {</b></p><p><b>  int j=0;</b></p><p><b>  LNode *p;</b></p><p><b>  p=L;</b></p><p><b>  while(p)</b&

30、gt;</p><p><b>  {</b></p><p>  if(p->data ==item)</p><p><b>  j++;</b></p><p>  p=p->next ;</p><p><b>  }</b><

31、/p><p><b>  return j;</b></p><p><b>  }</b></p><p>  int InsertLinkList(LNode *L,int item,int pos) // 鏈表的插入</p><p><b>  {</b></p&g

32、t;<p>  LNode *p,*s;</p><p>  p=SearchLinkList(L,pos-1);</p><p><b>  if(!p)</b></p><p>  return -1;</p><p>  s=new LNode;</p><p>  s->

33、;data =item;</p><p>  S+=s->data ;</p><p>  s->next =p->next ;</p><p>  p->next =s;</p><p><b>  return 1;</b></p><p><b>  }&l

34、t;/b></p><p>  LNode *CreatLinkList(char *ch,int len) //創(chuàng)建單鏈表</p><p><b>  {</b></p><p><b>  int i;</b></p><p>  LNode *L,*s;</p><

35、p>  if(len<=0)</p><p>  return NULL;</p><p>  s=new LNode;</p><p>  s->data =ch[0];</p><p><b>  S =ch[0];</b></p><p>  s->next =NUL

36、L;</p><p><b>  L=s;</b></p><p>  for(i=2;i<=len;i++)</p><p>  InsertLinkList(L,ch[i-1],i);</p><p>  return (L);</p><p><b>  }</b>

37、;</p><p>  int DeleteLinkList(LNode *L,int pos) //按位置刪除, 待與光標(biāo)連接一起</p><p><b>  {</b></p><p><b>  int item;</b></p><p>  LNode *p,*q;</p>&

38、lt;p>  p=SearchLinkList(L,pos-1);</p><p><b>  if(!p)</b></p><p>  return -1;</p><p>  q=p->next ;</p><p>  p->next =p->next ->next ;</p>

39、;<p>  item=q->data ;</p><p>  delete(q);</p><p>  return (item);</p><p><b>  }</b></p><p>  int ShowLinkList(LNode *L) //鏈表的輸出</p><p&

40、gt;<b>  {</b></p><p><b>  LNode *p;</b></p><p><b>  if(!L)</b></p><p>  return -1;</p><p><b>  p=L;</b></p><p

41、>  while(p->next )</p><p><b>  {</b></p><p>  cout<<p->data;</p><p>  p=p->next ;</p><p><b>  }</b></p><p>  cout

42、<<p->data <<endl;</p><p><b>  return 1;</b></p><p><b>  }</b></p><p>  void blueColor( ) //將字體變?yōu)樗{(lán)色</p><p><b>  {</b>&

43、lt;/p><p>  HANDLE hOut = GetStdHandle(STD_OUTPUT_HANDLE);</p><p>  SetConsoleTextAttribute(hOut,</p><p>  FOREGROUND_BLUE | </p><p>  FOREGROUND_GREEN |</p><

44、p>  FOREGROUND_INTENSITY); // 前景色_加強(qiáng)</p><p><b>  }</b></p><p>  void redColor() //將字體變?yōu)榧t色</p><p><b>  {</b></p><p>  HANDLE hOut = GetStdHan

45、dle(STD_OUTPUT_HANDLE);</p><p>  SetConsoleTextAttribute(hOut,</p><p>  FOREGROUND_RED | </p><p>  FOREGROUND_INTENSITY); // 前景色_加強(qiáng)</p><p><b>  }</b>&l

46、t;/p><p>  void greenColor() //字體變?yōu)榫G色</p><p><b>  {</b></p><p>  HANDLE hOut = GetStdHandle(STD_OUTPUT_HANDLE);</p><p>  SetConsoleTextAttribute(hOut,</p&g

47、t;<p>  FOREGROUND_GREEN |</p><p>  FOREGROUND_INTENSITY); // 前景色_加強(qiáng)</p><p><b>  }</b></p><p>  void whiteColor() //將字體恢復(fù)為白色</p><p><b>  {</

48、b></p><p>  HANDLE hOut = GetStdHandle(STD_OUTPUT_HANDLE);</p><p>  SetConsoleTextAttribute(hOut,</p><p>  FOREGROUND_BLUE | </p><p>  FOREGROUND_RED |</p>

49、<p>  FOREGROUND_GREEN); </p><p><b>  }</b></p><p>  void GetNext(string p, int next[]) //求模式串p的next[j]的值</p><p><b>  {</b></p><p>  int

50、j = 0, k = -1;</p><p>  next[0] = -1;</p><p>  int length = p.length() - 1;</p><p>  while (j <length)</p><p><b>  {</b></p><p>  if (k == -

51、1 || p[j] == p[k])</p><p><b>  {</b></p><p><b>  k++;</b></p><p><b>  j++;</b></p><p>  next[j] = k;</p><p><b>  

52、}</b></p><p><b>  else</b></p><p>  k = next[k];</p><p><b>  }</b></p><p><b>  }</b></p><p>  int KMPFind(string

53、 p, int next[], string q,int search[]) //用KMP算法在主串中查找子串,p為主串,q為子串</p><p><b>  {</b></p><p>  int i = 0, j = 0, k = 0, plength = p.length(), qlength=q.length(),flag=0,t=0;</p>

54、<p>  while (i < plength)</p><p><b>  {</b></p><p>  if (j == -1 || p[i] == q[j])</p><p><b>  {</b></p><p><b>  i++;</b>&l

55、t;/p><p><b>  j++;</b></p><p><b>  }</b></p><p><b>  else</b></p><p>  j = next[j];</p><p>  if (j == qlength)</p>

56、<p><b>  {</b></p><p><b>  flag++;</b></p><p>  search[t]= i-qlength;//flag存放的是第一次匹配到的字符的首位置 </p><p><b>  t++;</b></p><p><b

57、>  }</b></p><p><b>  }</b></p><p>  return flag;</p><p><b>  }</b></p><p>  void jiemian() //主界面函數(shù)</p><p><b>  {<

58、;/b></p><p>  blueColor( );</p><p>  cout<<"****************************************************************"<<endl;</p><p>  cout<<"*****

59、 *****"<<endl;</p><p>  cout<<"***** '請(qǐng)輸入0-6之間數(shù)字選擇要執(zhí)行的操作!' *****"<<endl;</p><p>  cout<&

60、lt;"***** 輸入'#'時(shí),輸入截止. *****"<<endl;</p><p>  cout<<"****************************************************************"<<endl;<

61、;/p><p>  cout<<"***** *****"<<endl;</p><p>  cout<<"*****

62、 *****"<<endl;</p><p>  cout<<"***** 1.打開(kāi)文件 2.輸入 3.刪除 4.插入 5.查找 6.存盤(pán) 0.退出 *****"<<endl;</p><p>  cout<<"*****

63、 *****"<<endl;</p><p>  cout<<"***** *****"<<endl;</p><p>  cout<<"******************

64、**********************************************"<<endl;</p><p>  cout<<"請(qǐng)根據(jù)菜單提示,輸入要執(zhí)行的操作!"<<endl;</p><p>  whiteColor();</p><p><b>  }</b>

65、;</p><p>  void Input() //輸入</p><p><b>  {</b></p><p>  sum=0,Punnum=0,Fignum=0,Spacenum=0,English=0; </p><p>  cout<<"請(qǐng)輸入文章內(nèi)容:"<<en

66、dl;</p><p><b>  int i=0;</b></p><p>  char ch[100000],end; //主函數(shù)中以數(shù)組方式輸入</p><p>  getchar();</p><p>  while((end=getchar())!='#')</p><p&g

67、t;<b>  {</b></p><p><b>  sum++;</b></p><p>  ch[i]=end;</p><p>  if(ch[i]>=48 && ch[i]<=57)</p><p><b>  Fignum++;</b>

68、</p><p>  else if((ch[i]>='a' && ch[i]<='z') || (ch[i]>='A' && ch[i]<='Z'))</p><p>  English++;</p><p>  else if((ch[i]&g

69、t;=33 && ch[i]<=64) || (ch[i]>=91 && ch[i]<=96) || (ch[i]>=123 && ch[i]<=126))</p><p><b>  Punnum++;</b></p><p>  else if(ch[i]==' ')&l

70、t;/p><p>  Spacenum++;</p><p><b>  i++;</b></p><p><b>  }</b></p><p>  system("cls");</p><p>  greenColor();</p><

71、p>  cout<<"文字:"<<sum<<" 數(shù)字:"<<Fignum<<" 字母:"<<English<<" 標(biāo)點(diǎn)符號(hào):"<<Punnum<<" 空格:"<<Spacenum<<endl;</

72、p><p>  whiteColor();</p><p>  LinkList=CreatLinkList(ch,sum); //創(chuàng)建鏈表</p><p><b>  }</b></p><p>  void tongji(string ss) //統(tǒng)計(jì)在刪除插入過(guò)程中各種字符數(shù)目的變化</p><

73、;p><b>  {</b></p><p>  int i=0,j=0;</p><p>  while(i<ss.length())</p><p><b>  {</b></p><p><b>  sum++;</b></p><p&g

74、t;  if(ss[i]>=48 && ss[i]<=57)</p><p><b>  Fignum++;</b></p><p>  else if((ss[i]>='a' && ss[i]<='z') || (ss[i]>='A' &&

75、ss[i]<='Z'))</p><p>  English++;</p><p>  else if((ss[i]>=33 && ss[i]<=64) || (ss[i]>=91 && ss[i]<=96) || (ss[i]>=123 && ss[i]<=126))</p&g

76、t;<p><b>  Punnum++;</b></p><p>  else if(ss[i]==' ')</p><p>  Spacenum++;</p><p><b>  i++;</b></p><p><b>  }</b><

77、/p><p>  greenColor();</p><p>  cout<<"文字:"<<sum<<" 數(shù)字:"<<Fignum<<" 字母:"<<English<<" 標(biāo)點(diǎn)符號(hào):"<<Punnum<<&q

78、uot; 空格:"<<Spacenum<<endl;</p><p>  whiteColor();</p><p><b>  }</b></p><p>  void tongjidel(string ss) //統(tǒng)計(jì)在刪除插入過(guò)程中各種字符數(shù)目的變化</p><p><b

79、>  {</b></p><p>  int i=0,j=0;</p><p>  while(i<ss.length())</p><p><b>  {</b></p><p><b>  sum--;</b></p><p>  if(ss[i

80、]>=48 && ss[i]<=57)</p><p><b>  Fignum--;</b></p><p>  else if((ss[i]>='a' && ss[i]<='z') || (ss[i]>='A' && ss[i]<=&

81、#39;Z'))</p><p>  English--;</p><p>  else if((ss[i]>=33 && ss[i]<=64) || (ss[i]>=91 && ss[i]<=96) || (ss[i]>=123 && ss[i]<=126))</p><p&g

82、t;<b>  Punnum--;</b></p><p>  else if(ss[i]==' ')</p><p>  Spacenum--;</p><p><b>  j++;</b></p><p>  if(j>ss.length())</p><

83、;p><b>  break;</b></p><p><b>  i++;</b></p><p><b>  }</b></p><p>  greenColor();</p><p>  cout<<"文字:"<<sum&

84、lt;<" 數(shù)字:"<<Fignum<<" 字母:"<<English<<" 標(biāo)點(diǎn)符號(hào):"<<Punnum<<" 空格:"<<Spacenum<<endl;</p><p>  whiteColor();</p><

85、;p><b>  }</b></p><p>  fstream file; //定義文件file</p><p>  void caozuo(int m) //按輸入的數(shù)值進(jìn)行相應(yīng)的操作</p><p><b>  {</b></p><p>  if(m>=1 &&

86、; m<=6)</p><p><b>  {</b></p><p><b>  switch(m)</b></p><p><b>  {</b></p><p>  case 1://1.打開(kāi)文件</p><p><b>  {

87、</b></p><p>  system("cls"); //清屏函數(shù)</p><p>  file.open("d:\\file.txt", ios::in);</p><p>  char in[2];</p><p>  int num = 0;</p>&l

88、t;p>  cout << "打開(kāi)文本如下:" << endl;</p><p><b>  S="";</b></p><p>  while (!file.eof())</p><p><b>  {</b></p><p>

89、  file.read(in, 1);</p><p>  in[1] = '\0';</p><p>  if(in[0]!='\0')</p><p><b>  S+=in[0];</b></p><p>  cout << in;</p><p>

90、;<b>  }</b></p><p>  file.close();</p><p>  cout<<endl;</p><p>  tongji(S); //統(tǒng)計(jì)字符串S中各種字符的數(shù)目</p><p>  jiemian();</p><p><b>  break

91、;</b></p><p><b>  }</b></p><p>  case 2://2.輸入</p><p><b>  {</b></p><p>  system("cls");</p><p>  Input();

92、 //輸入</p><p>  jiemian();</p><p><b>  break;</b></p><p><b>  }</b></p><p>  case 3://3.刪除</p><p><b>  {</b></

93、p><p>  int newpos;</p><p>  string s1="",s2="";</p><p>  string item;</p><p>  cout<<S<<endl;</p><p>  cout<<"請(qǐng)輸入要

94、刪除的字符:"<<endl;</p><p>  cin>>item;</p><p>  getchar();</p><p>  GetNext(item,next); //獲取子串next</p><p>  newpos=KMPFind(S,next, item,search); //查找到要

95、刪除字符串所在的位置</p><p>  if(newpos==0)</p><p><b>  {</b></p><p>  redColor();</p><p>  cout<<"要?jiǎng)h除的字符(串)不存在!"<<endl;</p><p>  w

96、hiteColor();</p><p><b>  }</b></p><p><b>  else</b></p><p><b>  {</b></p><p>  int startpos=0;</p><p>  cout<<ite

97、m<<"在主串中出現(xiàn)在首次位置為:"<<search[0]/80+1<<"行"<<search[0]%80+1<<"列"<<endl;</p><p>  for(int t=0;t<newpos;t++)</p><p><b>  {<

98、;/b></p><p>  for(int i=startpos;i<search[t];i++)</p><p><b>  s1+=S[i];</b></p><p>  for(int j=search[t]+item.length();j<search[t+1];j++)</p><p>&l

99、t;b>  s1+=S[j];</b></p><p>  startpos=search[t+1];</p><p>  tongjidel(item);</p><p><b>  }</b></p><p>  for(int j=search[t]+item.length();j<S.le

100、ngth();j++)</p><p><b>  s1+=S[j];</b></p><p><b>  S=s1;</b></p><p><b>  }</b></p><p>  redColor();</p><p>  cout<<

101、;"刪除后的字符串為:"<<endl;</p><p>  whiteColor();</p><p>  cout<<S<<endl;</p><p>  jiemian();</p><p><b>  break;</b></p><p&g

102、t;<b>  }</b></p><p>  case 4://4.插入</p><p><b>  {</b></p><p>  system("cls");</p><p>  cout<<S<<endl; //輸出原字符串</p&g

103、t;<p>  int newpos,m,n;</p><p>  string s1="",s2=""; //定義空字符串</p><p>  string item;</p><p>  while(true)</p><p><b>  {</b></p

104、><p>  greenColor();</p><p>  cout<<"請(qǐng)輸入要插入的位置:"<<endl;</p><p>  cout<<"請(qǐng)輸入要插入的行:"<<endl;</p><p><b>  cin>>m;</b

105、></p><p>  cout<<"請(qǐng)輸入要插入的列:"<<endl;</p><p><b>  cin>>n;</b></p><p>  whiteColor();</p><p>  newpos=(m-1)*80+n-1; //運(yùn)行窗口默認(rèn)值為

106、每行80</p><p>  if(newpos>S.length() || newpos<0)</p><p><b>  {</b></p><p>  redColor();</p><p>  cout<<"插入位置有誤,請(qǐng)重新輸入:"<<endl;<

107、/p><p>  whiteColor();</p><p><b>  }</b></p><p><b>  else</b></p><p><b>  break;</b></p><p><b>  }</b></p&g

108、t;<p>  greenColor();</p><p>  cout<<"請(qǐng)輸入要插入的字符:"<<endl;</p><p>  whiteColor();</p><p>  cin>>item;</p><p>  tongji(item);</p>

109、<p>  if(newpos==0)</p><p><b>  {</b></p><p><b>  item+=S;</b></p><p><b>  S=item;</b></p><p><b>  }</b></p>

110、<p>  else if(newpos==S.length()-1)</p><p><b>  {</b></p><p><b>  S=S+item;</b></p><p><b>  }</b></p><p><b>  else</

111、b></p><p><b>  {</b></p><p>  for(int i=0;i<newpos;i++)</p><p><b>  s1+=S[i];</b></p><p>  for(i=newpos;i<=S.length();i++)</p>&

112、lt;p><b>  s2+=S[i];</b></p><p>  S=s1+item+s2;</p><p><b>  }</b></p><p>  greenColor();</p><p>  cout<<"插入后的結(jié)果如下:"<<end

113、l;</p><p>  whiteColor();</p><p>  cout<<S<<endl;</p><p>  jiemian();</p><p><b>  break;</b></p><p><b>  }</b></p>

114、;<p>  case 5://5.查找 OK</p><p><b>  {</b></p><p>  system("cls");</p><p>  string find;</p><p><b

115、>  int pos;</b></p><p>  cout<<S<<endl;</p><p>  greenColor();</p><p>  cout<<"請(qǐng)輸入要查找的字符:"<<endl;</p><p>  whiteColor();</

116、p><p>  cin>>find; //輸入要查找的字符,輸出其出現(xiàn)的首位置</p><p>  GetNext(find,next);</p><p>  pos=KMPFind(S,next, find,search); //子串在主串中的位置</p><p>  if(pos==0)</p><

117、p><b>  {</b></p><p>  redColor();</p><p>  cout<<"主串中不包含要查找的字符(串)!"<<endl;</p><p>  whiteColor();</p><p><b>  }</b><

118、/p><p><b>  else</b></p><p><b>  {</b></p><p>  int startpos=0;</p><p>  redColor();</p><p>  cout<<find<<"在主串中出現(xiàn)在首次位

119、置為:"<<search[0]/80+1<<" 行 "<<search[0]%80+1<<" 列 "<<"首次出現(xiàn)的字符(串)變色部分所示"<<endl;</p><p>  cout<<find<<"在主串中總共出現(xiàn)了"<

120、<pos<<"次"<<endl;</p><p>  whiteColor();</p><p>  for(int t=0;t<pos;t++)</p><p><b>  {</b></p><p>  for(int i=startpos;i<searc

121、h[t];i++)</p><p>  cout<<S[i];</p><p>  greenColor();</p><p>  for(int j=search[t];j<search[t]+find.length();j++)</p><p><b>  {</b></p><

122、p>  cout<<S[j];</p><p><b>  }</b></p><p>  whiteColor();</p><p>  startpos=search[t]+find.length();</p><p><b>  }</b></p><p&

123、gt;  for(int j=startpos;j<S.length();j++)</p><p>  cout<<S[j];</p><p><b>  }</b></p><p>  cout<<endl;</p><p>  jiemian();</p><p>

124、;<b>  break;</b></p><p><b>  }</b></p><p>  case 6://6.存盤(pán)</p><p><b>  {</b></p><p>  system("cls");</p><p>

125、<b>  int j=0;</b></p><p>  ofstream ofs("d:\\file.txt");</p><p>  for(int i=0;i<=S.length();i++)</p><p><b>  {</b></p><p>  ofs<

126、<S[i];</p><p><b>  j++;</b></p><p><b>  if(j==80)</b></p><p><b>  {</b></p><p>  ofs<<'\n';</p><p><

127、;b>  j=0;</b></p><p><b>  }</b></p><p><b>  }</b></p><p>  file.close();</p><p>  redColor();</p><p>  cout << "

128、;你已經(jīng)成功將文本保存在D盤(pán)" << endl;</p><p>  whiteColor();</p><p>  jiemian();</p><p><b>  break;</b></p><p><b>  }</b></p><p><

129、b>  }</b></p><p><b>  }</b></p><p><b>  else</b></p><p><b>  {</b></p><p>  redColor();</p><p>  cout<<&

130、quot;輸入有誤請(qǐng)重新輸入(輸入數(shù)字范圍為0--6)!"<<endl;</p><p>  whiteColor();</p><p>  jiemian();</p><p><b>  }</b></p><p><b>  }</b></p><p&

131、gt;  int main()</p><p><b>  {</b></p><p>  jiemian();</p><p>  hout=GetStdHandle(STD_OUTPUT_HANDLE);</p><p>  while(true)</p><p><b>  {&l

132、t;/b></p><p>  int chose;</p><p>  cin>>chose;</p><p>  if(chose!=0)</p><p>  caozuo(chose);</p><p>  else if(chose==0)</p><p><b&

133、gt;  {</b></p><p>  redColor();</p><p>  cout<<"此次程序運(yùn)行到此結(jié)束,謝謝使用!"<<endl; //0.退出</p><p>  whiteColor();</p><p><b>  break;</b>&l

134、t;/p><p><b>  }</b></p><p><b>  }</b></p><p><b>  return 0;</b></p><p><b>  }</b></p><p><b>  八、PPT打印版&l

溫馨提示

  • 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ù)僅提供信息存儲(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)論