文本编辑和串查找.doc

上传人:博****1 文档编号:548739398 上传时间:2023-03-04 格式:DOC 页数:13 大小:221.50KB
返回 下载 相关 举报
文本编辑和串查找.doc_第1页
第1页 / 共13页
文本编辑和串查找.doc_第2页
第2页 / 共13页
文本编辑和串查找.doc_第3页
第3页 / 共13页
文本编辑和串查找.doc_第4页
第4页 / 共13页
文本编辑和串查找.doc_第5页
第5页 / 共13页
点击查看更多>>
资源描述

《文本编辑和串查找.doc》由会员分享,可在线阅读,更多相关《文本编辑和串查找.doc(13页珍藏版)》请在金锄头文库上搜索。

1、 数据结构课程设计报告题目:文本编辑和串查找统计学生姓名: XX 学 号: XXX 班 级: XXX 指导教师: XXX 20XX年 X 月 X 日31 需求分析: 问题重述:文本编辑和串查找统计任务:输入一页文字,程序可以统计出文字、数字、空格和其它标点符号的个数。静态存储一页文章,每行最多不超过80个字符,共N行;功能要求:1)、分别统计出其中英文字母数、空格数、标点符号及整篇文章总字数;2)、统计某一字符串在文章中出现的次数,并输出该次数;3)、删除某一子串,并将后面的字符前移。要求用菜单选择操作,分别用几个子函数实现相应的功能;输入数据的形式和范围:可以输入大写、小写的英文字母、任何数

2、字及标点符号。输出形式:(1)分行输出用户输入的各行字符;(2)分5行输出全部字母数、数字个数、空格个数、“标点符号个数”文章总字数(3)输出删除某一字符串后的文章; 需求分析由于人工清点一篇文章的字母个数、数字个数、标点个数、文章字数、空格字数,需要花费大量的时间,而且容易出现误差。所以我们的任务就是创建一个文本编辑器的程序,以此来代替繁琐的人工操作,提高计算的效率。该程序需要实现的功能有: .输入功能:可以实现文本的输入。可以实现所有数字、大小写字母、任何标点符号的输入编辑。.输出功能:可以实现文本的输出。 可以实现文本有关字母、数字、标点,文章的输出。.统计功能:可以实现文本的统计。 可

3、以实现对文本有关数字、字母,标点符号的总数统计,以及对文本总字数的统计。 可以实现对文本内某数字、字母、单词等(即字符串)在文章中出现的次数的统计。.删除功能:可以实现文本的删除。 可以实现对文本内某数字、字母、单词等(即字符串)的删除功能,并将后面的字符前移。2 总体设计: 程序的框架:文本编辑器输入功能删除功能统计功能输出功能删除后输出统计后输出输入后统计 程序说明: 该文本编辑器的所有功能都是基于输出功能而存在的。输入后,输出验证输入的正确性;统计后,输出需要统计的事件; 删除后,输出删除某字符串的文章。3 详细设计:首先,定义一个二维数组用来存储。(可以另外的添加一个文件,如果要永久保

4、存的话。)输入功能: 定义一个输入函数,定义一个字符串,来实现字符的输入。并将输入的字符保存到设置的二维数组里。最后用一个while函数,实现对文章是否继续输入的控制,这里设置是否识别到“#”字符来判断,即当识别到“#”字符的时候,结束文章的输入,并弹出提示:“是否将输入的文章保存到文件中”输出功能: 定义一个输出函数,将二维数组里面的数据输出。统计功能: 定义五个整型变量来统计全部字母数、数字个数、空格个数、“标点符号个数”文章总字数。遍历二维数组,实现各个串的统计。 定义一个整型变量来统计一个串出现的次数。遍历二维数组,实现对该串出现的次数。删除功能: 定义一个删除函数,定义所需变量,遍历

5、二维数组,发现匹配的串,删除,并将后面的字符串前移。若不匹配,继续查找,循环,直至找到需要删除的字符串,并将其删除,同时将后面字符串前移。接着,定义一个菜单函数,用一个whileif函数设置好每个功能的菜单列表,按下什么键实现什么功能。即用菜单函数调用所写的各个子函数,以此来实现对每个功能的实现。最后,在主函数里定义所需的变量,然后调用菜单函数。 4 实现部分:源代码:#include#include#define N 100 /最大行数using namespace std; char strN80; /存储 int lN; /每一行的实际字符个数int n; /n 是史记的行数char a

6、80; /目标字符串void save()FILE *fp=fopen(income.txt,w);for(int i=0;in;i+) fputs(stri,fp); printf(保存完毕!); void shuru()char c=0; int i=0,j=0;n=0; while(c!=#)scanf(%c,&c);for(i=0;in;i+)for(j=0;jli;j+)strij=c; li+; if (c=n) n+;printf(输入完毕!);c=0;printf(是否将输入的文章保存到文本中(Y|y);getchar();scanf(%c,&c);if(c=Y|c=y)sav

7、e();void input() /输入要统计的字符串int k;char c; k=0;while(1) scanf(%c,&c); /接受字符 换行中断 if(c=n)break; ak=c; /保存 k+; ak=0; / 0结尾void print() /输出用户输入的各行字符int i,j;for(i=0;i=n;i+) for(j=0;jli;j+) printf(%c,strij);printf(n);void tongji() /统计int i,j;int zm,kg,sz,bd,sum; /分别记录字母个数,空格个数,数字个数,标点数,总数zm=kg=sz=sum=0;bd=

8、sum-zm-kg-sz;for(i=0;i=n;i+) for(j=0;jli;j+) if(strij!=n) /遍历 sum+; if(strij=a)|(strij=A) zm+; if(strij=0) sz+; if(strij= ) kg+; printf(n全部字母数为:%dn,zm);printf(数字个数为:%dn,sz);printf(空格个数为:%dn,kg);printf(标点个数为:%dn,bd);printf(文章总字数为:%dnn,sum);void chazhao() /统计某一字符串在文章中出现的次数int i,j,k,l1,y; /l1是目标字符穿长度 x

9、是统计出现的次数 int x=0;l1=strlen(a);for(i=0;i=n;i+) /遍历 for(j=0;jli;j+) y=1; /标志为 if(j+l1=li)break; /超过最大长度 中断 for(k=0;kl1;k+) if(ak!=strij+k)y=0;break; if(y)x+; for(i=0;il1;i+) printf(%c,ai);printf( 在文中出现次数为:%dnn,x);void del() /删除某一字符串并输出int i,j,k,l1,y;bool bN81; /给每一个字符一个标志位l1=strlen(a); /目标长度memset(b,0,sizeof(b); /内存初始化 为0 b是起位置 b 的大小for(i=0;i=n;i+) for(j=0;jli;j+) y=1; if(j+l1=li)break; for(k=0;kl1;k+) if(ak!=strij+k&!bij+k)/如果不匹配,将y标记为0,并重新查找 y=0; break; if(y) /匹配成功 标志为1 for(k=0;kl1;k+) bij+k=1; /将bij+k标记为1,说明strij+k应删去 printf(n删除该字符串后文章:n); for(i=0;i=n;i+) for(j=0;jli;j+)

展开阅读全文
相关资源
相关搜索

当前位置:首页 > 生活休闲 > 社会民生

电脑版 |金锄头文库版权所有
经营许可证:蜀ICP备13022795号 | 川公网安备 51140202000112号