开发者

Using "mod" operator

I am trying to display whenever I need to do a certain action in my for loop every 300th iteration (makes sense?)

Here is in code what I want to do, but not the way I want to do it:

for I := 0 to 2000 do
  Begin
   if I = 300 then
   DoAnAction;

   if I = 600 then
   DoAnAction

   if I = 900 then
   DoAnAction

   if I = 1200 ......... Same action all over, but I don't want to check all those conditions!
  End;

开发者_JS百科So I have been told to use the mod operator, and this is how I do it:

for I := 0 to 2000 do
 Begin
  if I mod 300 = 299 then
  DoAnAction;
 End;

However, the results using the above snippet would do the action at 299, 599, 899 ....

How can I make it do it at 300, 600, 900 ...... using the Mod operator? (And doing if I mod 300 = 300 did not work)

Thanks!


for I := 0 to 2000 do
 Begin
  if (I mod 300 = 0) and (I > 0) then
    DoAnAction;
 End;

Though your previous version does makes sense too, I=299 is the 300th pass ;)

EDIT: I mod 300 = 300 would not work because mod operator returns the remainder of devision, which is by definition will be in range 0..299


The mod operator returns the rest of the division. So if you want to do it every 300th iteration, use i mod 300 = 0.

I mod 300 = 300 doesn't make sense, as there can't be a division by 300 leaving a rest of 300.


Use this:

if i mod 300 = 0

The modulus operator returns the remainder of a division.

Here's an example to help you out. Drop a TMemo on a blank new form, and put this in the FormCreate evemt:

procedure TForm1.FormCreate(Sender: TObject);
var
  i: Integer;
const
  Output = 'i mod %d = %d';
begin
  Memo1.Clear;
  for i := 0 to 10 do
    Memo1.Lines.Add(Format(Output, [i, i mod 5]));
end;

Run it, and look at the output in the memo.


Try (I <> 0) AND ((I mod 300) = 0).


Using "mod" operator

procedure TForm1.Button1Click(Sender: TObject); var i:REal; begin i:=strtofloat(edit1.Text); if i mod 5 = 0 then begin label1.Caption:='Кратно 5'; end else begin label1.Caption:='Не кратно 5'; end; end;

0

上一篇:

下一篇:

精彩评论

暂无评论...
验证码 换一张
取 消

最新问答

问答排行榜