我是Delphi中Aplication表单的初学者,我需要一些帮助。所以它基本上是一个程序,它对数字进行Aritmetic计数 备忘录框。我还想为它添加间隔。 (-15; 20>我想为所有的ODD数字做这件事。
此处列出了变量 soucet:SUM, pocet:数字的数量, Prumer:算术平均值
procedure TForm1.Button3Click(Sender: TObject);
var soucet,prumer,x: Real;
i,pocet:Integer;
begin
Memo1.Clear;
soucet:=0;
pocet:=0;
i:=0;
While i<= Memo1.Lines.Count-1 do begin --
x:=StrToFloat (Memo1.lines[i]); --
If (x>-5) and (x<=5) then begin
soucet:= soucet + x;
inc(pocet);
end;
inc(i);
end;
If pocet>0 then begin
prumer:=soucet/pocet;
Memo1.Text:= floattostr(prumer);
end
else Memo1.Text:= 'Žádná čísla z intervalu (-15;20>';
但我只希望这段代码适用于ODD号码......
procedure TForm1.Button3Click(Sender: TObject);
var soucet,prumer,x: Real;
i,pocet:Integer;
begin
Memo1.clear;
soucet:=0;
pocet:=0;
i:=0;
While i<= Memo1.Lines.Count-1 do begin --
x:=StrToFloat (Memo1.lines[i]); --
If (x>-5) and (x<=5) then begin
If x mod 2<>0 then begin
soucet:= soucet + x;
inc(pocet);
end;
end;
inc(i);
end;
If pocet>0 then begin
prumer:=soucet/pocet;
Memo1.Text:= floattostr(prumer);
end
else Memo1.Text:= 'Žádná čísla z intervalu (-15;20>';
问题是它显示:运算符不适用于此操作数类型。 我该怎么做才能消除这个错误?
答案 0 :(得分:1)
您已将x
声明为real
,但mod
运算符适用于integer
要么
x
声明为integer
并使用StrToInt
,TryStrToInt
或StrToIntDef
io StrToFloat
real
截断为int
,如下所示:if Trunc(x) mod 2 <> 0
或更好地使用内置的odd
函数,如下所示:if odd(Trunc(x))
这将解决您的直接问题,但您可能需要阅读
并且与您当前的代码无关,但重要的是提及