求以下问题的完整代码,要求使用c++面向对象的程序设计方法和构造函数
字符串过滤只保留字母和数字,用剩余字符串的长度除以K取余,就是第一组数据的字符个数,后面的组数输出K个字符即可。
代码如下:
#include <iostream>
using namespace std;
class StrSplit
{
public:
StrSplit() {}
int isNmb(char c)
{
if (c >= '0' && c <= '9')
return 1;
else
return 0;
}
int isBigCharacter(char c)
{
if (c >= 'A' && c <= 'Z')
return 1;
else
return 0;
}
int isSmalCharacter(char c)
{
if (c >= 'a' && c <= 'z')
return 1;
else
return 0;
}
void deal(char* p,int k)
{
int i = 0, j = 0;
while (p[i] != '\0')
{
if (isNmb(p[i]))
p[j++] = p[i];
else if (isBigCharacter(p[i]))
p[j++] = p[i];
else if (isSmalCharacter(p[i]))
p[j++] = p[i] - 32; //小写转大写
i++;
}
p[j] = '\0';
int t = strlen(p) % k; //计算出第一组数据的长度
//先输出第一组
i = 0;
while (i < t )
{
cout << p[i];
i++;
}
//输出后面的
while (i < strlen(p))
{
if(t > 0)
cout << "-";
int j = 0;
while (j < k)
{
cout << p[i];
i++;
j++;
}
}
}
};
int main()
{
char p1[10001] = { 0 };
int k;
StrSplit ph;
cin >> p1;
cin >> k;
ph.deal(p1,k);
return 0;
}
您好,我是有问必答小助手,您的问题已经有小伙伴帮您解答,感谢您对有问必答的支持与关注!