高级字符串编辑器

高级字符串编辑器

题目描述

从键盘输入一个字符串(长度< =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;
} 
发布了11 篇原创文章 · 获赞 1 · 访问量 255

猜你喜欢

转载自blog.csdn.net/weixin_42408097/article/details/104416326