求字母ac - ba 中间的值 思路(100)

  • 主题发起人 主题发起人 bigness
  • 开始时间 开始时间
B

bigness

Unregistered / Unconfirmed
GUEST, unregistred user!
比如我在Edit1 中输入 ac Edit2 中输入 ba 插入memo1中的值是acadae..azba求这种算法的思路
 
是不是就只有两位字母??如果是,好办一点。思路如下:取出第一个字母的ASCII值,乘100,加上第二个字母的ASCII值。循环,按上面算法从edit1的值到edit2的值。 判断,如果后两位的值为字母Z的ASCII值,就在百位上加1,后两位为01。 显示,将数值的前两位显示成字母,后两位也显示成字母。循环结束。
 
unit Digit;interfaceuses SysUtils; //无限进制转换 //使用于数学领域进制之间相互转换 //返回整数的进制表示 ;mScale 指定多少进制 ;mLength 指定长度 ,长度不足时向前补 cScaleChar[1] //function IntToDigit(mNumber: Integer; mScale: Byte;mLength: Integer = 0): string; //返回进制表示转换成整数 ;mScale 指定多少进制 //function DigitToInt(mDigit: string; mScale: Byte): Integer;const cScaleChar = '0123456789ABCDEFGHIJKLMNOPQRSTUVWXYZ';function IntPower(Base, Exponent: Integer): Integer;function IntToDigit(mNumber: Integer; mScale: Byte; mLength: Integer = 0): string;function DigitToInt(mDigit: string; mScale: Byte): Integer;implementationfunction IntPower(Base, Exponent: Integer): Integer;var I: Integer;begin Result := 1; for I := 1 to Exponent do Result := Result * Base;end;function IntToDigit(mNumber: Integer; mScale: Byte; mLength: Integer = 0): string;var I, J: Integer;begin Result := ''; I := mNumber; while (I >= mScale) and (mScale > 1) do begin J := I mod mScale; I := I div mScale; Result := cScaleChar[J + 1] + Result; end; Result := cScaleChar[I + 1] + Result; for I := 1 to mLength - Length(Result) do Result := cScaleChar[1] + Result;end;function DigitToInt(mDigit: string; mScale: Byte): Integer;var I: Byte; L: Integer;begin Result := 0; mDigit := UpperCase(mDigit); L := Length(mDigit); for I := 1 to L do Result := Result + (Pos(mDigit[L - I + 1], cScaleChar) - 1) * IntPower(mScale, I - 1);end;end.
 
{将:const cScaleChar = '0123456789ABCDEFGHIJKLMNOPQRSTUVWXYZ';改为:const cScaleChar = 'ABCDEFGHIJKLMNOPQRSTUVWXYZ';}procedure TForm1.btn1Click(Sender: TObject);var I:Integer;begin for I:=DigitToInt('ac',26) to DigitToInt('ba',26) do Memo1.Lines.Add(IntToDigit(I,26,2));end;
 
有多少个字符遍历多少次, char是可以直接<或>比较大小的
 
谢谢liuchong 给的Demo 问题解决了
 
多人接受答案了。
 
后退
顶部