delphi 编程问题,第一个数计算正确,后面的就不正确,请delphi大神们帮忙...
发布网友
发布时间:2024-10-03 21:09
我来回答
共3个回答
热心网友
时间:2024-10-20 17:29
for k:=1 to 50 do
begin
f:=1.0; //你这里错了
i:=i*2*pi*f;
j:=1/(2*pi*f*j);
z[k]:=i-j;
f:=f+1.0;
end;
你这样做使f的值每次都等于1.0,就算你运算了50次其结果都是一样的,尽管你有一句
f:=f+1.0;
但只要进入下一个循环时f的值又赋值为1.0,所以就得不到正确的结果了,改为如下就可以了:
。。。。。。
f:=1.0; //这句写在循环的外面
for k:=1 to 50 do
begin
i:=i*2*pi*f;
j:=1/(2*pi*f*j);
z[k]:=i-j;
f:=f+1.0;
end;
。。。。。。。。。。。。。。。。。
希望能对你有所帮助。
热心网友
时间:2024-10-20 17:35
procedure TForm1.Button1Click(Sender: TObject);
var
i,j,pi,f:real;
k:integer;
z:array[1..50]of real;
begin
pi:=3.14;
i:=strtofloat(Edit1.Text)+strtofloat(Edit2.Text)+
strtofloat(Edit3.Text);
j:=strtofloat(edit4.Text);
f:=1.0; //你这句是为了每次触发这单击事件时初始化 f 的值,把它放在循环外面就行了,不然只要进入下一个循环时 f 的值又赋值为 1.0,循环里的 f:=f+1.0; 就没有意义了
for k:=1 to 50 do
begin
i:=i*2*pi*f;
j:=1/(2*pi*f*j);
z[k]:=i-j;
f:=f+1.0;
end;
label1.Caption:=floattostr(z[3]);
end;
热心网友
时间:2024-10-20 17:36
把你的for循环中的f:=1.0移出去到for循环之前应该就可以了
你把f的初始赋值放在循环里面
在最后又有一个f:=f+1的累加,但是你的累加值每次都在循环开始的时候又被f:=1.0改成了1.0了
所以你的值总是不会是你想要的,你先改了再看看吧