PTA 1033 旧键盘打字

PTA 1033 旧键盘打字

旧键盘上坏了几个键,于是在敲一段文字的时候,对应的字符就不会出现。现在给出应该输入的一段文字、以及坏掉的那些键,打出的结果文字会是怎样?

输入格式:
输入在 2 行中分别给出坏掉的那些键、以及应该输入的文字。其中对应英文字母的坏键以大写给出;每段文字是不超过 105 个字符的串。可用的字符包括字母 [a-z, A-Z]、数字 0-9、以及下划线 _(代表空格)、,、.、-、+(代表上档键)。题目保证第 2 行输入的文字串非空。
注意:如果上档键坏掉了,那么大写的英文字母无法被打出。

输出格式:
在一行中输出能够被打出的结果文字。如果没有一个字符能被打出,则输出空行。
输入样例:

7+IE.
7_This_is_a_test.

输出样例:

_hs_s_a_tst

思路:
1,定义三个字符串变量,分别存储坏掉的那些键、应该输入的文字和最终输出文字。
2,循环语句。对字符串y的各个字符根据x中的所有条件进行讨论(坏键的存在(剔除坏键),上档键的存在(剔除大写字母))。将满足条件的字符存储在z中。
3,输出z。
注意:
1,在输入x,y时用getline函数,不能直接用cin。

代码:

#include
#include
using namespace std;
int main(){
	string a,b,c;
	getline(cin,a);
	getline(cin,b);
	for(int i=0;i<b.size();i++){
		if(a.find(toupper(b[i]))!=a.npos){        //将x中出现的坏键从y中剔除
			c=c;
		}
		else if(a.find('+')!=a.npos){       //讨论上档键是否坏了
			if (b[i]>='A'&&b[i]<='Z'){        //讨论字母的大写情况(上档键坏了大写字母无法输出)
				c=c;
			}
			else{
				c+=b[i];          //满足条件的添加进字符串z
			}
		}
		else{
			c+=b[i];          //满足条件的添加进字符串z
		}
	}
	cout<<c;           //输出能打出的文字
	return 0;
}

你可能感兴趣的:(计算机外设,算法,c++)