2012-10-14 2 views
2

아이디어는 6/49 추첨에서 플레이 할 수있는 모든 가능한 조합을 얻는 것입니다. 처음 두 숫자는 작동합니다. 다음 세 번째 숫자에 대한 조건을 추가 할 때 : Undefined variable: b. 나는 왜 그런지 이해하지 못한다. 프로그램이 작동하는지 확인하기 위해 echo를 사용합니다.verry 작은 PHP 프로그램이 작동하지 않습니다

다음은 코드입니다. 누군가 내가 잘못하고있는 것을 나에게 설명 할 수 있기를 바랍니다. 고맙습니다.

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>"; 
      } 
     } 
    } 
} 
+1

어떤 언어를 말해주십시오. 형식을 수정했습니다. – bmargulies

+0

PHP, 맞나요? – Aubin

+0

쉘 스크립트 일 수도 있습니다. – askmish

답변

1

는, 그래서 $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>"; 
     } 
     } 
    } 
    } 
} 
+1

예, 작동합니다! 매우 감사합니다! 나는 이해한다. – Point89

0

$ i == $ j 일 때 $ b는 정의되지 않습니다. $ i! = $ j 일 때만 inner for 루프를 실행하려고한다고 가정합니다. 이 문제는 일반적으로 함수 재귀를 통해 해결됩니다 (6 개의 숫자를 하드 코딩 할 필요가 없음). 도움이

희망,

  • 요하네스
  • 첫 번째 반복 $i == $j
0

이 왜 루프 중첩 (6)을 사용하지 않는 ....

난 당신이 사용하는 언어를 얻을하지 않습니다 그래서 일부 의사 코드에 넣을 것입니다 ...

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); 
      } 
     } 
     } 
    } 
    } 
} 
관련 문제