2016-06-30 9 views
-2
for (int a = 0; a < Count; ++a) 
{ 
    if (my if) 
    { 
     action; 
     sleep; 
    } 
} 

ここは私の現在のコードです。私がそれをするとき、ループのすべてのメンバーのために眠ります。しかし、私はそれがループ全体のために一度だけ寝てほしい。どうすればいいですか?睡眠はforループでトリガするたびに1回だけ実行されます。

編集:私はあまり明確ではなかったと思います。私はすべての私のカウントが同じ時間に行動をして眠りたいと思う。上記のコードは、Countがアクションを開始するたびにスリープ状態になります。

+0

ブール変数を追加し、最初のスリープ後にtrueに設定します。 boolean falseの場合にのみスリープが許可されます。 –

+0

ifのあなたの述語が真実なら、行動、睡眠、行動の行動、行動など....ちょっと調べてみると、これはやりたいことのようなものではないようです... – Chris

+0

@Chris私はすべてのカウントが同じ時間に行動をして眠りたいと思っています。 – Emir

答えて

1

あなたはこのことを意味するか...

sleep; 

for (int a = 0; a < Count; ++a) 
{ 
    if (my if) 
    { 
     action; 
    } 
} 

または

for (int a = 0; a < Count; ++a) 
{ 
    if (a == 0) 
    { 
     sleep; 
    } 
    action; 
} 
+0

これは同じではありません。オペラは寝る前に常に行動を呼びます。 – Chris

+2

OPが望んでいるものが明確でない – lordkain

+1

OPの元のコードと一致するようにスリープする必要があります。 – Polyfun

0

シンプルなブール:

bool slept = false; 
for (int a = 0; a < Count; ++a) 
{ 
    if (myif) 
     { 
      action; 
      if (!slept) 
      { 
       sleep; 
       slept = true; 
      } 
     } 
} 
+0

は "a == 0"だけをテストできるので、スリープ状態は冗長です。 – Polyfun

+1

@Polyfunもし 'myIf'がa == 0に対して' false'ならば、どうしますか? – user3185569

+0

myifでBSODが発生するとどうなりますか? – Polyfun

1
bool isSleepDone = false; 
for (int a = 0; a < Count; ++a) 
{ 
    if (my if) 
    { 
    action; 

    if(!isSleepDone)  
    { 
     sleep; 
     isSleepDone = true; 
    } 
    } 
} 
+1

私は 'bool'を' true'や 'false'と比較するのは好きではありません。私はそれを 'if(!isSleepDone)'に変更するでしょう。 –

+0

isSleepDoneは冗長です。なぜなら "a == 0"だけをテストできるからです。 – Polyfun

+0

それを行う方法がたくさんあります::) –

0

これも動作します:

for (int a = 0; a < Count; ++a) 
{ 
    if (my if) 
    { 
     action; 
     if (a == 0) 
     { 
      sleep; 
     } 
    } 
} 
関連する問題