m0_59649650 2021-12-24 15:23 采纳率: 0%
浏览 28

定义一个类Deduplicate,设计一个算法实现将输入的一个字符串

问题遇到的现象和发生背景

img

问题相关代码,请勿粘贴截图
#include <iostream>
using namespace std;
class Deduplicate
{
private:
char data[100];
char result[100];
int num;

public:
Deduplicate (int a=0){num=a;}
void input();
void process();
void sort();
void display( );

};


void Deduplicate::input()
{
cout<<"请输入一个字符串"<<endl;
cin>>data[100];
}
void Deduplicate::process()
{
int k=0;
result[0]=data[0];

for (unsigned int i=0; i <strlen(data); i++)
{
for (unsigned int j =0,f=0; j <strlen(result); j++)
{if(result[j]==data[i])
{f=1;break;}
if(f==0)
result[k++]=data[i];
}
}
result[k]='\0';
num=strlen(data)-strlen(result);
cout<<"共删除重复字符数为"<<num<<endl;
cout<<"删除重复字符后的结果为"<<result[k]<<endl;
}
void Deduplicate::sort()
{
    for (int k = 0; k <result[k-1]; k++) {
        
                if (result[k] >result[k+1]) {
                    char temp = result[k];
                    result[k] = result[k+1];
                    result[k+1] = temp;
                }
    }
    cout<<"字符串排序后的结果为"<<result[k]<<endl;

}
void Deduplicate::display( )
{
}
int main()
{
Deduplicate test;
test.input();
test.process();
test.sort();
test.display( );
    
system("pause");
return 0;
}

运行结果及报错内容

img

我的解答思路和尝试过的方法
我想要达到的结果

img

  • 写回答

1条回答 默认 最新

  • 关注
    
    #include <iostream>
    using namespace std;
    class Deduplicate
    {
    private:
        char data[100];//存放输入的字符串。
        char result[100];//存放处理后的字符串。
        int num;//删除重复字符串后的字符串中的字符个数。
    public:
        Deduplicate (int a=0){num = 0;}
        void input(){cin >> data;}//向data数组中输入存放字符串
        //实现删除字符串中所有重复出现的字符。
        void process()
        {
            int i=0,k=0;
            num = 0;
            for (i=0;data[i]!= '\0';i++)
            {
                for (k=0;k<num;k++)
                {
                    if(result[k]== data[i])
                        break;
                }
                if(k==num)
                    result[num++]= data[i];
            }
            result[num]=0;
        }
        //对删除重复字符串结果进行排序。
        void sort()
        {
            int i,j;
            char ch;
            for (i=0;i<num-1;i++)
            {
                for (j=0;j<num-1-i;j++)
                {
                    if(result[j] > result[j+1])
                    {
                        ch = result[j];
                        result[j]= result[j+1];
                        result[j+1]= ch;
                    }
                }
            }
        }
        //输出字符串。
        void display()
        {
            cout << result<<endl;
        }
        //获取删除重复字符数
        int getNum()
        {
            return num;
        }
    };
    int main()
    {
        Deduplicate test;
        test.input();
        test.process();
        test.sort();
        test.display();
        cout << "去重后的长度:"<<test.getNum()<<endl;
        return 0;
    }
    
    
    评论

报告相同问题?

问题事件

  • 创建了问题 12月24日

悬赏问题

  • ¥20 gitlab 中文路径,无法下载
  • ¥15 用动态规划算法均分纸牌
  • ¥30 udp socket,bind 0.0.0.0 ,如何自动选取用户访问的服务器IP来回复数据
  • ¥15 关于树的路径求解问题
  • ¥15 yolo在训练时候出现File "D:\yolo\yolov5-7.0\train.py"line 638,in <module>
  • ¥30 戴尔inspiron独显直连
  • ¥15 进行一项代码设计遇到问题
  • ¥15 Mutisim中关于74LS192N计数器芯片设计(计数器)
  • ¥50 fastadmin后台无法删除文件
  • ¥15 oracle查询Socket read timed out错误