高级字符串编辑器
题目描述
从键盘输入一个字符串(长度< =40个字符),并以字符’.’结束。编辑功能有:
1 D:删除一个字符,命令的方式为:D a 其中a为被删除的字符,例如:D s 表示删除字符’s’,若字符串中有多个 ‘s’,则删除第一次出现的。
2 I:插入一个字符,命令的格式为:I a1 a2 其中a1表示插入到指定字符前面,a2表示将要插入的字符。例如:I s d 表示在指定字符 ’s’ 的前面插入字符 ‘d’ ,若原串中有多个 ‘s’,则插入在最后一个字符的前面。
3 R:替换一个字符,命令格式为:R a1 a2 其中a1为被替换的字符,a2为替换的字符,若在原串中有多个a1则应全部替换。
在编辑过程中,若出现被改的字符不存在时,则给出提示信息(“no exist”)。
输入
第一行输入一行字符串第二行输入指令
this is a book.
D s
输出
输出被编辑之后的字符串,若无法编辑则输出no exist
thi is a book.
代码
#include<iostream>
#include<string>
using namespace std;
int main()
{
char ss[42];
int i=0,t=-1;
while(1)
{
scanf("%c",&ss[i]);
if(ss[i]=='.') break;
i++;
}
getchar();
char cc,c1,c2;
scanf("%c",&cc);
if(cc=='D')
{
getchar();
scanf("%c",&c1);
for(int j=0;j<=i;j++)
{
if(ss[j]==c1 && t==-1 ) t=j;
}
if(t==-1) cout<<"no exist";
else
{
for(int j=0;j<=i;j++)
{
if(j!=t) cout<<ss[j];
}
}
}
else
{
getchar();
scanf("%c %c",&c1,&c2);
if(cc=='R')
{
for(int j=0;j<=i;j++)
{
if(ss[j]==c1)
{
ss[j]=c2;
t=1;
}
}
if(t!=-1)
{
for(int j=0;j<=i;j++)
{
cout<<ss[j];
}
}
else cout<<"no exist";
}
if(cc=='I')
{
for(int j=0;j<=i;j++)
{
if(ss[j]==c1)
{
t=j;
}
}
if(t==-1) cout<<"no exist";
else
{
for(int j=0;j<=i;j++)
{
if(j==t) cout<<c2;
cout<<ss[j];
}
}
}
}
return 0;
}
转载:https://blog.csdn.net/weixin_42408097/article/details/104416326
查看评论