2011-12-29 4 views
0

私は狂ってしまいます。 シャッフルされたデッキから5枚のポーカーカードを選んで、カップル、ダブルカップル、トリスなどがあるかどうかを確認するソースを書いています。しかし、ストレートを見つけることを扱う関数は私に苦労しています。Cのポーカーソフトウェアのプロトタイプ、ストレートを見つける機能の問題

int hasStraight(const int wFirstFace[],int size) 
{ 
    int *firstfacePtr,i,j; 
    firstfacePtr=wFirstFace; 

    for(i=0;i<=1;i++) 
    { 
     for(j=0;j<=size-2;j++) 
     { 
      if (firstfacePtr[j]!=firstfacePtr[j+1]-1 && i==0) 
       break; 
      else if (firstfacePtr[j]!=firstfacePtr[j+1]-1 && i==1) 
       return 0; 
      else if (j==3 &&firstfacePtr[j]==firstfacePtr[j+1]-1) 
       printf("Scala!\n"); 
       return 1; 
     } 
     if (firstfacePtr[0]==0) 
      firstfacePtr[0]=13; 
      bubble(firstfacePtr,size); /*bubble goes through an array 
             and put it in ascending order*/ 
    } 

} 

注:私は私がエースはこれが元である1と同様に11を評価することができるという事実の前に考えられていないので、これを書き換える必要があったwFirstFaceは5つの整数を含む配列です。サイズは整数で、5に等しい。 コードが有効かどうかを確認するために、wFirstFace={0,1,2,3,4}を宣言しようとしました。 それから、内部の 'for'サイクルは1サイクル後に終了し、関数は0を返し、私は理由も場所も知らない。 この厄介なソースコードのどこで私は間違いを犯しましたか?

+1

ここで再入力しましたか?可能であればコピーして貼り付けてください。その最後の "else if"にカッコがないように見えます。それ以外の場合は、常に1が返されます。 –

+1

デバッガの使い方を学んでください。デバッガがなくてもそれほど遠くには行きません。 – zvrba

答えて

2

私が見ることができるカッコのミスマッチがいくつかあります。

1 - これは常にreturn 1;です。最後にelse if{}を入れますか?

for(j=0;j<=size-2;j++) 
    { 
     if (firstfacePtr[j]!=firstfacePtr[j+1]-1 && i==0) 
      break; 
     else if (firstfacePtr[j]!=firstfacePtr[j+1]-1 && i==1) 
      return 0; 
     else if (j==3 &&firstfacePtr[j]==firstfacePtr[j+1]-1) 
      printf("Scala!\n"); 
      return 1; 
    } 

2 - あなたはbubble()for(i=ループのすべての反復のために実行したいですか?またはif (firstfacePtr[0]==0)がtrueの場合のみですか?

if (firstfacePtr[0]==0) 
     firstfacePtr[0]=13; 
     bubble(firstfacePtr,size); /*bubble goes through an array and put it in ascending order*/ 
+0

@ user1068051上記の回答が役立ち、情報がわかり、問題の解決に役立った場合は、その横の目盛りをクリックして確認してください。ありがとう! –

関連する問題