- 1、本文档共16页,可阅读全部内容。
- 2、原创力文档(book118)网站文档一经付费(服务费),不意味着购买了该文档的版权,仅供个人/单位学习、研究之用,不得用于商业用途,未经授权,严禁复制、发行、汇编、翻译或者网络传播等,侵权必究。
- 3、本站所有内容均由合作方或网友上传,本站不对文档的完整性、权威性及其观点立场正确性做任何保证或承诺!文档内容仅供研究参考,付费前请自行鉴别。如您付费,意味着您自己接受本站规则且自行承担风险,本站不退款、不进行额外附加服务;查看《如何避免下载的几个坑》。如果您已付费下载过本站文档,您可以点击 这里二次下载。
- 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
您可能关注的文档
- 石狮市五星村基坑监测程序.doc
- 植物生产与环境第1章描述.ppt
- 石油与天然气地质学读书程序.doc
- 时代新城A6#、A7#土方开挖施工方案程序.doc
- 李合生植物生理学光合作用3描述.ppt
- 植物生产与环境第四章---植物生产与科学用水描述.ppt
- 植物生理,复习描述.doc
- 一体机-笔记本配置单程序.doc
- 植物生理矮壮素描述.ppt
- 一位操盘手的程序.doc
- 初中数学课堂早餐时间思维训练策略探讨教学研究课题报告.docx
- 2024年湖南初级会计考试试题及答案.docx
- 《基于人工智能的智能电网故障诊断与预测的关键技术研究与展望》教学研究课题报告.docx
- 2025年在线医疗平台患者康复数据跟踪报告.docx
- 初中生数字素养评价在推进教育信息化进程中的实践研究教学研究课题报告.docx
- 数字化教学管理在高中体育教学中的创新应用研究教学研究课题报告.docx
- 《BIM技术在建筑项目全生命周期中的成本控制与优化策略研究》教学研究课题报告.docx
- 2024年咖啡师(制作及品鉴)技能资格证知识考试题库与答案.docx
- 《我国个人征信体系构建对消费信贷市场稳定性的影响研究》教学研究课题报告.docx
- 初中写作教学中的情境创设与效果分析教学研究课题报告.docx
文档评论(0)