偶是Delphi新手!请教在delphi实现edit1中输入几个数逆序输出在edit2中,在edit3中从小到大排序输出的代码
展开全部
edit1中几个数是以空格分隔吗?如果是的话,参见如下程序
procedure GetReverseAndOrdered( const sSource : string; var sResult1, sResult2 : string );
var
SL : TStringList;
i : Integer;
L : Integer;
begin
SL := TStringList.Create;
try
// 如果有用多个空格分隔的,合并为一个
sSource := AnsiStringReplace( sSource, #$20#$20, #$20 );
// 将空格转换为回车,继而变成StringList的各行
SL.Text := AnsiStringReplace( sSource, #$20, #$0D#$0A );
{ 逆序输出,顺带求出最长的数字串至L }
sResult1 := '';
L := 0;
for i := SL.Count - 1 downto 0 do
begin
sResult1 := Format( '%s %d', [ sResult1, SL[i] ] );
if Length( SL[i] ) > L then
L := Length( SL[i] );
end;
{ 规整各行数字串,前面补上0,使得按照字符串排序和与按照数值排序效果一致 }
for i := 0 to SL.Count - 1 do
SL[i] := Format( '%.*d', [ L, StrToInt( SL[i] ) ] );
SL.Sorted := True;
{ 输出排序后的序列 }
sResult2 := '';
for i := 0 to SL.Count - 1 do
sResult2 := Format( '%s %d', [ sResult2, StrToInt( SL[i] ) ] );
finally
SL.Free;
end;
end;
调用方法
var
s2, s3 : string;
......
GetReverseAndOrderd( edit1.Text, s2, s3 );
edit2.Text := s2;
edit3.Text := s3;
procedure GetReverseAndOrdered( const sSource : string; var sResult1, sResult2 : string );
var
SL : TStringList;
i : Integer;
L : Integer;
begin
SL := TStringList.Create;
try
// 如果有用多个空格分隔的,合并为一个
sSource := AnsiStringReplace( sSource, #$20#$20, #$20 );
// 将空格转换为回车,继而变成StringList的各行
SL.Text := AnsiStringReplace( sSource, #$20, #$0D#$0A );
{ 逆序输出,顺带求出最长的数字串至L }
sResult1 := '';
L := 0;
for i := SL.Count - 1 downto 0 do
begin
sResult1 := Format( '%s %d', [ sResult1, SL[i] ] );
if Length( SL[i] ) > L then
L := Length( SL[i] );
end;
{ 规整各行数字串,前面补上0,使得按照字符串排序和与按照数值排序效果一致 }
for i := 0 to SL.Count - 1 do
SL[i] := Format( '%.*d', [ L, StrToInt( SL[i] ) ] );
SL.Sorted := True;
{ 输出排序后的序列 }
sResult2 := '';
for i := 0 to SL.Count - 1 do
sResult2 := Format( '%s %d', [ sResult2, StrToInt( SL[i] ) ] );
finally
SL.Free;
end;
end;
调用方法
var
s2, s3 : string;
......
GetReverseAndOrderd( edit1.Text, s2, s3 );
edit2.Text := s2;
edit3.Text := s3;
展开全部
button的onclick事件中
var
i,j:integer;
begin
edit2.text:='';
edit3.text:='';
for i:=length(edit1.text) downto 0 do//逆序输出;
edit2.text:=edit2.text+edit1.text[i];
end;
//下面的是从小到大排序,纯手写,没试过自己试一下看行不行。
var
i,j:integer;
begin
for i:=0 to length(edit1.text) do
begin
for j:=1 to length(edit1.text) do
begin
if strtoint(edit1.text[i])>strtoint(edit1.text[j]) then
edit3.text:=edit3.text+edit1.text[i]
else
edit3.text:=edit3.text+edit1.text[j];
end;
end;
end;
var
i,j:integer;
begin
edit2.text:='';
edit3.text:='';
for i:=length(edit1.text) downto 0 do//逆序输出;
edit2.text:=edit2.text+edit1.text[i];
end;
//下面的是从小到大排序,纯手写,没试过自己试一下看行不行。
var
i,j:integer;
begin
for i:=0 to length(edit1.text) do
begin
for j:=1 to length(edit1.text) do
begin
if strtoint(edit1.text[i])>strtoint(edit1.text[j]) then
edit3.text:=edit3.text+edit1.text[i]
else
edit3.text:=edit3.text+edit1.text[j];
end;
end;
end;
已赞过
已踩过<
评论
收起
你对这个回答的评价是?
展开全部
代码他们都发了 基本就那样。我建议你去了解下冒泡算法
已赞过
已踩过<
评论
收起
你对这个回答的评价是?
推荐律师服务:
若未解决您的问题,请您详细描述您的问题,通过百度律临进行免费专业咨询