noip2008初赛-字符串替换

noip2008C_4_1(字符串替换)给定一个字符串S(S仅包含大小写字母),下面的程序将S中的每个字母用规定的字母替换,并输出S经过替换后的结果。程序的输入是两个字符串,第一个字符串是给定的字符串S,第二个字符串S’由26个字母组成,它是a~z的任一排列,大小写不定,S’规定了每个字母对应的替换字母:S’中的第一个字母是字母A和a的替换字母,即 S中的A用该字母的大写替换,S中的a用该字母的小写替换;S’中的第二个字母是字母B 和b的替换字母,即S中的B用该字母的大写替换,S中的b用该字母的小写替换;…… 以此类推。


样例输入:
hello noip
abcdefgacjklmnaxqrstuvwxyz


样例输出:
aella nacx


var
str:string;//明文
change:string;//密钥

procedure CheckChangeRule;//将密钥字符串全部矫正为小写字符串
var
i:integer;
begin
	for i:=1 to 26 do
	begin
		if (change[i]>='A') and (change[i]<='Z') then
		change[i]:=chr(ord(change[i])-ord('A')+ord('a'));
	end;
end;

procedure ChangeString;
var
len,i:integer;
begin
	len:=length(str);
	for i:=1 to len do
	begin
		if (str[i]>='A') and (str[i]<='Z') then
		begin
			str[i]:=upcase(change[ord(str[i])-ord('A')+1]);
		end
		else
		begin
			str[i]:=change[ord(str[i])-ord('a')+1];
		end;
	end;
end;

begin
	readln(str);
	readln(change);
	CheckChangeRule;
	ChangeString;
	writeln(str);
end.


你可能感兴趣的:(竞赛真题,全国信息学奥林匹克竞赛)