回 帖 发 新 帖 刷新版面

主题:[讨论]纯粹化问题:50分

二、纯粹化Krunch    
源程序名    Krunch.PAS
可执行文件名   Krunch.EXE
输出文件名     Krunch.OUT    
时限           1秒

一个纯粹单词不包含元音字母("A", "E", "I", "O", and "U"),也不包含重复字母。从单词MISSISSIPPI中除去元音字母和重复字母,剩下的单词应为MSP。纯粹短语有着和纯粹单词一样的构词规则,例如:
        RAILROAD CROSSING
它的纯粹版本是:
        RLD CSNG
空格也会被纯粹化。一个纯粹短语的首尾是不含空格的,不会连续的2个空格,标点符号前没有空格。其它情况下,空格都不会被除去。如果我们用符号"_"表示空格,那么:
        MADAM_I_SAY_I_AM_ADAM__
纯粹化后即是:
        MD_SY
编写一个程序,读入一行信息(字符个数在2至70之间), 纯粹化它,然后输出到输出文件中。输入文件仅含大写字母,空格,和标准标点符号: 句号,逗号,问号。

输入格式
仅一行,是有待纯粹化的信息。

样例输入(krunch.in)
NOW IS THE TIME FOR ALL GOOD MEN TO COME TO THE AID OF THEIR COUNTRY.

输出格式
仅仅一行,是被纯粹化后的信息。

样例输出(krunch.out)
NW S TH M FR L GD C Y.

回复列表 (共1个回复)

沙发

program krunch;
var
   s:string;
   b:array ['A'..'Z'] of boolean;
   a:longint;

begin
     assign(input,'krunch.in');
     assign(output,'krunch.out');
     reset(input);
     rewrite(output);

     readln(s);
     while (length(s)>0) and (s[1]=' ') do delete(s,1,1);
     while (length(s)>0) and (s[length(s)]=' ') do delete(s,length(s),1);
     while pos('A',s)>0 do delete(s,pos('A',s),1);
     while pos('E',s)>0 do delete(s,pos('E',s),1);
     while pos('I',s)>0 do delete(s,pos('I',s),1);
     while pos('O',s)>0 do delete(s,pos('O',s),1);
     while pos('U',s)>0 do delete(s,pos('U',s),1);
     while a<=length(s) do
     begin
          if s[a] in ['A'..'Z'] then
             if b[s[a]] then
             begin
                  delete(s,a,1);
                  continue;
             end else begin b[s[a]]:=true; inc(a); continue; end;
          if (s[a]=' ') and (s[a-1]=' ') then
          begin
               delete(s,a,1);
               continue;
          end;
          if (s[a] in ['.',',','?']) and (s[a-1]=' ') then
          begin
               delete(s,a-1,1);
               dec(a);
               continue;
          end;
          inc(a);
     end;
     while (length(s)>0) and (s[1]=' ') do delete(s,1,1);
     while (length(s)>0) and (s[length(s)]=' ') do delete(s,length(s),1);
     writeln(s);

     close(input);
     close(output);
end.

我来回复

您尚未登录,请登录后再回复。点此登录或注册