这个简单的Pascal问题哪里错了?

来源:百度知道 编辑:UC知道 时间:2024/05/20 05:40:09
【1996年提高组3】字符串编辑

Time Limit:2000MS Memory Limit:65536K
Total Submit:120 Accepted:44

Description

从键盘输入一个字符串(长度<=40个字符),并以字符'.'结束.
例如:'This is a book.',现对该字符串进行编辑,编辑功能有:
D:删除一个字符,命令的方式为:
D a 其中a为被删除的字符
例如:D s 表示删除字符's',若字符串中有多个's',则删除第一次出现的,如上例中删除的结果为:
'Thi is a book.'
I:插入一个字符,命令的格式为:
I a1 a2 其中a1表示插入到指定字符前面,a2表示将要插入的字符
例如: I s d 表示在指定字符's'的前面插入字符'd',若原串中有多个's',则插入在最后一个字符的前面,
如上例中,原串:'This is a book.'
插入后:'This ids a book.'
R:替换一个字符,命令格式为:
R a1 a2 其中a1为被替换的字符,a2为替换的字符,若在原串中有多个a1,则应全部替换
例如:原串:'This is a book.'
输入命令: R o e
替换后:' This is a beek.'
在编辑过程中,若出现被指定的字符不存在时,则给出提示信息"wrong"

Input

第一行为原串;
第二行为n,表示有n条命令;
接下来的n行分别为命令;

Output

替换后的字符串;

Sample Input

This is a bo

呵呵。这个题我也在巴蜀的JudgeOnline上做过。
但是我的程序也不能AC,而且到现在我还是不知道是哪里错了。
楼主的程序貌似没有错误,就和我的一样。
不过有人AC了这个题,我觉得不是评测机的问题。
关注!

program hsjd;
var
s,s1,order:ansistring;
a,b,c:char;
i,j,k,n:longint;
begin
readln(s);
readln(n);
for i:=1 to n do
begin
readln(order);
case order[1] of
'D':
begin
b:=order[3];
if pos(b,s)=0 then begin writeln('wrong');halt;end else
delete(s,pos(b,s),1);
end;
'I':
begin
b:=order[3];c:=order[5];
if pos(b,s)=0 then begin writeln('wrong');halt;end else
begin
for j:=length(s) downto 1 do
if s[j]=b then break;
for k:=length(s)+1 downto j+1 do
s[k]:=s[k-1];
s[j]:=c;
end;
end;
'R':
begin