帮忙补充个函数C++语言
/*定义一个字符串类String,字符串中包含多处数字和非数字字符。例如:“aBbc12hg67lis76jj8543g674hgf234bh”,要求把字符串中连续的数字...
/*定义一个字符串类String,字符串中包含多处数字和非数字字符。
例如:“aBbc12hg67l is76jj8543g674hgf234bh”,要求把字符串中连续的数字作为一个整数,
依次存放到整型数组num中,并统计出整数的个数。要求:
①私有成员数据:
●char *str; //存放字符串的动态字符数组的起始地址
●int num[ 20 ]; //存放提取出来的整数
●int count; //存放统计出来的整数个数
②公有成员函数:
●String ( char *s=0 ); //构造函数,初始化相关的成员数据
●~ String ( ); //析构函数
●void process ( ); //提取整数依次存放到整型数组num中,并统计整数的个数
●void show(); //输出各成员数据
③编写main()函数对String类进行测试。
【算法提示】
在构造函数中通过new运算符实现动态字符数组的分配,分配的空间数由参数s字符串的长度决定。由于构造函数中使用了new运算符,就必须显式定义析构函数,在析构函数中通过delete运算符,释放动态字符数组的空间。
process()成员函数,完成对字符串中整型数据的提取。提取时,逐一扫描字符串中的每一个字符,当开始遇到数字字符时,表示一个整型数据的开始,直到开始遇到非数字字符或字符串结束符为止,才算一个整型数据的结束;还需要将数字字符转换成相应的数值(即:数字字符 - 字符'0'),然后再合起来构成一个整型数据。在处理非数字字符时,需要连续跳过非数字字符,直到再开始遇到数字字符或字符串结束符为止。*/
#include<iostream.h>
#include<string.h>
#include<iomanip.h>
class String
{char*str;
int num[20];
int count;
public:
String(char*s=0)
{if(s){str=new char[strlen(s)+1];
strcpy(str,s);}
count=0;
}
~String(){if(str) delete [] str;}
void process();
void show() {cout<<str<<endl;cout<<"整数个数:"<<count<<endl;
if(count!=0)
{for(int i=0;i<count;i++)
{cout<<num[i]<<setw(5);
if(i%4==3)cout<<endl;}
cout<<endl;}
}
};
void String::process()
{/*********************************
int i=0;
while(str[i])
{ if(str[i]>=47&&str[i]<=58)
{count=i;num[i]=str[i];}
i++;
*******************************/
}
}
void main()
{String s1="aBbc12hg67l is76jj8543g674hgf234bh";
s1.process();s1.show();
}
/**/错误的 帮帮忙 展开
例如:“aBbc12hg67l is76jj8543g674hgf234bh”,要求把字符串中连续的数字作为一个整数,
依次存放到整型数组num中,并统计出整数的个数。要求:
①私有成员数据:
●char *str; //存放字符串的动态字符数组的起始地址
●int num[ 20 ]; //存放提取出来的整数
●int count; //存放统计出来的整数个数
②公有成员函数:
●String ( char *s=0 ); //构造函数,初始化相关的成员数据
●~ String ( ); //析构函数
●void process ( ); //提取整数依次存放到整型数组num中,并统计整数的个数
●void show(); //输出各成员数据
③编写main()函数对String类进行测试。
【算法提示】
在构造函数中通过new运算符实现动态字符数组的分配,分配的空间数由参数s字符串的长度决定。由于构造函数中使用了new运算符,就必须显式定义析构函数,在析构函数中通过delete运算符,释放动态字符数组的空间。
process()成员函数,完成对字符串中整型数据的提取。提取时,逐一扫描字符串中的每一个字符,当开始遇到数字字符时,表示一个整型数据的开始,直到开始遇到非数字字符或字符串结束符为止,才算一个整型数据的结束;还需要将数字字符转换成相应的数值(即:数字字符 - 字符'0'),然后再合起来构成一个整型数据。在处理非数字字符时,需要连续跳过非数字字符,直到再开始遇到数字字符或字符串结束符为止。*/
#include<iostream.h>
#include<string.h>
#include<iomanip.h>
class String
{char*str;
int num[20];
int count;
public:
String(char*s=0)
{if(s){str=new char[strlen(s)+1];
strcpy(str,s);}
count=0;
}
~String(){if(str) delete [] str;}
void process();
void show() {cout<<str<<endl;cout<<"整数个数:"<<count<<endl;
if(count!=0)
{for(int i=0;i<count;i++)
{cout<<num[i]<<setw(5);
if(i%4==3)cout<<endl;}
cout<<endl;}
}
};
void String::process()
{/*********************************
int i=0;
while(str[i])
{ if(str[i]>=47&&str[i]<=58)
{count=i;num[i]=str[i];}
i++;
*******************************/
}
}
void main()
{String s1="aBbc12hg67l is76jj8543g674hgf234bh";
s1.process();s1.show();
}
/**/错误的 帮帮忙 展开
2个回答
展开全部
#include "iostream"
#include "string"
using namespace std;
class String
{
char *str;
int num[20];
int count;
public:
String( char *s)
{ count=0;
str=new char[strlen(s)+1];
strcpy(str,s);
}
~String()
{delete [] str;
}
void process()
{ int i=0,j=0;
while( str[j]!='\0')
{
if( str[j]>='0'&& str[j]<='9')
{
num[i++]=str[j];
count++;
}
j++;
}
}
void show()
{
cout<<"\n 输入的字符串为\n"<<str<<endl;
cout<<"\n 吸收的数字字符时,个数为\n"<<count<<endl;
for(int i=0;i<count;i++)
cout<<num[i]-48<<" ";
}
};
void main()
{
String me("1a2dfd3fdsd3344df67sd89");
me.process();
me.show();
}
#include "string"
using namespace std;
class String
{
char *str;
int num[20];
int count;
public:
String( char *s)
{ count=0;
str=new char[strlen(s)+1];
strcpy(str,s);
}
~String()
{delete [] str;
}
void process()
{ int i=0,j=0;
while( str[j]!='\0')
{
if( str[j]>='0'&& str[j]<='9')
{
num[i++]=str[j];
count++;
}
j++;
}
}
void show()
{
cout<<"\n 输入的字符串为\n"<<str<<endl;
cout<<"\n 吸收的数字字符时,个数为\n"<<count<<endl;
for(int i=0;i<count;i++)
cout<<num[i]-48<<" ";
}
};
void main()
{
String me("1a2dfd3fdsd3344df67sd89");
me.process();
me.show();
}
本回答被提问者采纳
已赞过
已踩过<
评论
收起
你对这个回答的评价是?
展开全部
已赞过
已踩过<
评论
收起
你对这个回答的评价是?
推荐律师服务:
若未解决您的问题,请您详细描述您的问题,通过百度律临进行免费专业咨询