关于字符转换问题(30分)

  • 主题发起人 主题发起人 junye--li
  • 开始时间 开始时间
J

junye--li

Unregistered / Unconfirmed
GUEST, unregistred user!
var
s,t:string;
d:real;
i:Integer;
begin
S:= memo1.Text;
for i:=1 to (length(s+' ')div 2)-2 do
begin
d:= StrTofloat(S[2*i-1])+StrTofloat(S[2*i+1])+StrTofloat(S[2*i+3]);
t:=FloatToStr(d/3);
end;
Memo2.Text:=memo2.text + t + ' ';
end;

当在Memo1中输入1 2 3会得到平均值2,但输入1 22 3就出错;length是长度,我要的是每遇到一个空格是一个数,Memo1中的数的个数不确定;11 22 33相加得22。用数组可以吗?具体的句子请大家帮我写一下,谢谢。
 
with TStringList.Create do
try
DelimitedText := memo1.Text;
Delimiter := ' ';
for I := 0 to Count - 1 do
begin
d := D + StrToFloat(Items);
end;
memo2.Text := memo2.text + FloatToStr(d/3);
finally
Free;
end;
 
我真是够无私的了,现给你调试的哦。给分吧
var str,intstr:string;
strs:TStrings;
result:double;
i,n:integer;
begin
strs:=TStringList.Create;
intstr:='0123456789.';
str:=Memo1.Text;
result:=0.00;
n:=0;
for i:=0 to length(str)-1 do
begin
if pos(str,intstr)>0 then
begin
strs.Add('');
strs[n]:=strs[n]+str;
if pos(str[i+1],intstr)<=0 then
n:=n+1;
end;
end;
for i:=0 to n-1 do
result:=result+strtofloat(strs);
showmessage(floattostr(result)+'/'+inttostr(n));
result:=result/n;
edit1.text:=floattostr(result);
strs.free;
end;
 
这位哥哥非常感谢你,还是有点小问题,麻烦你在帮忙解决一下!在memo1中的数是不确定的 ,但只求三个数的平均值;如求第1、2、3个数的平均值,第2、3、4个数的平均值,第3、4、5个数的平均值,第4、5、6个数的平均值;依次类推,将求出多个数的平均值;最好能把每一个平均值都显示出来,谢谢!
 
怎么好像实在做家庭作业啊 哈哈
小兄弟 这个问题你完全可以自己解决的
这里给你提供点思路
Memo1中输入的数都已经被提取出来了 并且是保存再一个字符串数组里
n是得到得数量
所以只要在最后的循环中判断一下执行的次数是否为3的倍数 是的话就运算一下前三项的和
同时把结果保存在令一个数组里 就行了
代码你自己写吧 其实写这多比给你写代码麻烦多了 你要明白哥哥的苦心啊
多动动脑 相信你会进步很快的 哈哈 搞定就结贴 我等着攒分哪 哈哈
 
多人接受答案了。
 
后退
顶部