2. 加密和解密。    有一行电文(从 文件 coded.txt 读入, 不超过1024个字符), 已按下面规律译成了密码:
        A――>Z                  a――>z
       B――>Y                  b――>y
       C――>X                  c――>x
        ………..                  ………..
     即第 1 个字母变成第 26 个字母, 第 2 个字母变成第 25 个字母, 第 i 个字母变成第 (26-i+1) 个字母, 非字母字符时不变。 要求编出程序, 将密码还原成原文,并输出密码和原文到文件 decode.txt 。
  
文件 code.txt  的格式:
      R zn z xloovtv hgfwvmg uiln wvkzignvmg lu xlnkfgvi zkkorxzgrlm.
      
   文件 decode.txt 格式:
      密文:
      R zn z xloovtv hgfwvmg uiln wvkzignvmg lu xlnkfgvi zkkorxzgrlm.      原文:
      I am a college student from department of computer application.

解决方案 »

  1.   

    function decode(codestr:string):string;
    var
      i:integer;
      decodestr:string;
    begin
      for i:=1 to length(codestr) do
      begin  
        if ord(codestr[i]) in [65..90] then
           decodestr[i]:=chr(155-ord(codestr[i]))
        else if ord(codestr[i]) in [97..122] then
           decodestr[i]:=chr(219-ord(codesrt[i]))
        else decodestr[i]:=codestr[i];
      end;
      result:=decodestr;
    end;上面是解密函数,其实加密也是这个函数至于读文件和写文件,自己应该可以搞定了吧.
      

  2.   

    能解析的更清楚一点吗?刚认识dephi很多东西不会
      

  3.   

    汗ing~~~~让他多看看书吧。
      

  4.   

    ICMGDCHN((梦醒泪湿襟)->喜欢明月) 写的有点错误,但是思路不错
      

  5.   

    昨晚没开Delphi就直接写了,刚才跟了下,发现STRING的数组成员不能作为左值,应该是STRING在赋值时再分配内存空间有关吧,改了下,测试通过了function decode(codestr:string):string;
    var
      i:integer;
      decodestr:string;
    begin
      for i:=1 to length(codestr) do
      begin
        if ord(codestr[i]) in [65..90] then
           decodestr:=decodestr+chr(155-ord(codestr[i]))
        else if ord(codestr[i]) in [97..122] then
           decodestr:=decodestr+chr(219-ord(codestr[i]))
        else decodestr:=decodestr+codestr[i];
      end;
      result:=decodestr;
    end;不过我感觉效率上还不是很好,等下嵌入汇编看下.