比赛 暑假培训一 评测结果
题目名称 字符串的展开 最终得分 0
用户昵称 EnAsn 运行时间 0.000 s
代码语言 Pascal 内存使用 0.00 MiB
提交时间 2008-07-17 14:38:25
显示代码纯文本
program ex(f1,f2);
 var
  s,s1,s2,s3:string; f1,f2:text;
  i,j,k,c,n,m,p1,p2,p3,l:integer;
  ch1,ch2:char; flag,flag2:boolean;
 begin
  assign(f1,'expand.in'); reset(f1);
  assign(f2,'expand.out'); rewrite(f2);
  readln(f1,p1,p2,p3);
  readln(f1,s);
  flag:=true;
while flag do
 begin
  l:=pos('-',s);
  s1:=copy(s,1,l);
  delete(s,1,l);
  flag2:=true;
  if s1[1]='-' then begin delete(s1,1,1); flag2:=false end;
  ch1:=s1[l-1];
  ch2:=s[1];
  s3:='';
 if s1<>'' then begin
  for j:=(ord(ch1)+1) to (ord(ch2)-1) do
  s3:=s3+chr(j);
  if (ord(s[1])-1)>ord(s1[l-1]) then
   begin
    if p1=2 then for j:=1 to length(s3) do
       begin
      if (s3[j]>='a')and(s3[j]<='z') then
       s3[j]:=chr(ord(s3[j])-32);
       end
            else if p1=3 then
      for j:=1 to length(s3) do
       s3[j]:='*';
      delete(s1,l,1);
      write(f2,s1);
      if p3=1 then
       begin
       for
        k:=1 to length(s3) do
         for c:=1 to p2 do
         write(f2,s3[k]);
       end
       else if p3=2 then
        begin
        for k:=length(s3) downto 1 do
         for c:=1 to p2 do
          write(f2,s3[k]);
        end;
   end
   else if  (ord(s[1])-1)=ord(s1[l-1])
     then
      begin
       delete(s1,l,1);
       write(f2,s1);
      end
     else if ord(s[1])<=ord(s1[l-1]) then
      write(f2,s1);
  end
  else begin write(f2,s); flag:=false; end;
 end;
 close(f1);
 close(f2);
end.