实践VC++程序.doc

  1. 1、本文档共16页,可阅读全部内容。
  2. 2、原创力文档(book118)网站文档一经付费(服务费),不意味着购买了该文档的版权,仅供个人/单位学习、研究之用,不得用于商业用途,未经授权,严禁复制、发行、汇编、翻译或者网络传播等,侵权必究。
  3. 3、本站所有内容均由合作方或网友上传,本站不对文档的完整性、权威性及其观点立场正确性做任何保证或承诺!文档内容仅供研究参考,付费前请自行鉴别。如您付费,意味着您自己接受本站规则且自行承担风险,本站不退款、不进行额外附加服务;查看《如何避免下载的几个坑》。如果您已付费下载过本站文档,您可以点击 这里二次下载
  4. 4、如文档侵犯商业秘密、侵犯著作权、侵犯人身权等,请点击“版权申诉”(推荐),也可以打举报电话:400-050-0827(电话支持时间:9:00-18:30)。
查看更多
? ? 课程实践报告 ? ? ? ? 设计题目: 程序设计实践(VC++) 设计时间 至 2015-3-13 学院(系): 学院 专业班级: 学生姓名: 学号 指导老师: ? 任务 一、实践任务9.定义一个字符串类CString,并设计一个算法对该串中各个不同字符出现的频率进行统计。 二、详细设计 1、类的描述与定义 (1)私有数据成员 ??char *str:指向要统计的字符串。 ??char (*p)[2]:动态分配二维空间,用以存放str所指字符串中出现的字符及其出现的次数(次数在存放时,用该数字对应的ASCII值存放;在输出次数时,输出该ASCII字符对应的ASCII值即可)。 ??int size:存放字符串中出现的所有不同的字符的个数。 (2)公有成员函数 ??CString (char *s) :根据s参数初始化数据成员str;p和size初始值为0。 ??void Count():p根据s所指字符串长度分配空间。然后把str所指字符串中的每个字符放入p数组中,设置每个字符的出现次数为1。根据p数组统计不同字符出现的频率,并求得size的实际大小。最后根据size的实际大小,重新分配p所指空间,并把不同字符及其出现次数重新放回p数组(提示:可以借助临时数组或指针来实现)。 ??void Show():屏幕显示字符串、字符串的每个字符和与之对应的次数。 ??~CString():释放动态分配的空间。 2、主要函数设计 在主程序中定义字符串char s[]=”abdabcdesffffd”。定义一个CString类对象test,用s以初始化test,完成对该类的测试。源程序清单 #includeiostream.h #includestring.h class CString{ private: char*str; char (*p)[2]; int size; public: CString(char*s) { str=new char[strlen(s)+1]; strcpy(str,s); size=0; p=0; } void Count(); void Show(); ~CString() { if(str) delete str;} }; void CString::Count() { p=new char[strlen(str)][2]; int i,j,k; for(i=0,j=0;istrlen(str);i++) { p[i][j]=str[i]; p[i][j+1]=1; } char*part1=new char[strlen(str)+1]; int*part2=new int[strlen(str)+1]; for(i=0;istrlen(str);i++) { part1[i]=\0; } for(i=0;istrlen(str);i++) { part2[i]=0; } for(i=0;istrlen(str);i++) { for(j=i;jstrlen(str);j++) { int count; for(k=0,count=0;ksize;k++) { if(part1[k]==p[i][0])count++; } if(count==1) break; else { part1[size]=p[i][0]; size++; } } } for(k=0;ksize;k++) { for(i=0;istrlen(str);i++) { if(part1[k]==p[i][0]) { part2[k]++; } } } delete []p; p=new char[size][2]; for(i=0;isize;i++) { p[i][0]=part1[i]; p[i][1]=part2[i]; } delete []part1; delete []part2; } void CString::Show() { cout原字符串为:strendl; cout不同的字符数:sizeendl; cout字符串中的每个字符为:endl; for(int i=0;isize;i++) coutp[i][0] 次数(int)p[i][1]endl; } void

文档评论(0)

w447750 + 关注
实名认证
内容提供者

该用户很懒,什么也没介绍

1亿VIP精品文档

相关文档