2

アイデアは、6/49 の宝くじでプレイできるすべての可能な組み合わせを取得することです。最初の 2 つの数字については機能します。3 番目の数字の条件を追加すると、次のようになります Undefined variable: b。理由がわかりません。そこでエコーを使用して、プログラムが機能しているかどうかを確認します。

これがコードです。

for ($i=1 ; $i<50 ; $i++)
{
    $a=$i;
    for ($j=1 ; $j<50 ; $j++)
    {
        if ($i!=$j)
        {
            $b=$j;  
        }
        for ($k=1 ; $k<50 ; $k++)
        {

            if ($k!=$j && $k!=$i)
            {
                $c=$k;
                echo "$a $b $c<br>";
            }
        }
    }
}
4

3 に答える 3

1

最初の反復$i == $jでは、初期化されること$bはありません。ifを拡張して内側のループをカバーすることで修正できます。

for ($i=1 ; $i<50 ; $i++)
{

  $a=$i;
  for ($j=1 ; $j<50 ; $j++)
  {

    if ($i!=$j)
    {
        $b=$j;

      for ($k=1 ; $k<50 ; $k++)

      {

        if ($k!=$j && $k!=$i)
        {
            $c=$k;
            echo "$a $b $c<br>";
        }
      }
    }
  }
}
于 2012-10-14T17:43:24.783 に答える
0

$i == $j の場合、$b は未定義です。$i != $j の場合にのみ内側の for ループを実行したいと思います。通常、この問題は関数の再帰によって解決されることに注意してください (6 つの数値をハードコーディングする必要はありません)。

それが役立つことを願って、

  • ヨハネス
于 2012-10-14T17:41:17.897 に答える
0

ネストされた 6 つの for ループを使用してみませんか....

あなたが使用している言語がわからないので、疑似コードに入れます...

for (a=1; x<50-5; a++){
  for (b=a+1; x<50-4; b++){
    for (c=b+1; x<50-3; c++){
      for (d=c+1; x<50-2; d++){
        for (e=d+1; x<50-1; e++){
          for (f=e+1; x<50; f++){
            print (a,b,c,d,e,f);
          }
        }
      }
    }
  }
}
于 2012-10-14T17:46:30.070 に答える