私は狂ってしまいます。 シャッフルされたデッキから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を返し、私は理由も場所も知らない。 この厄介なソースコードのどこで私は間違いを犯しましたか?
ここで再入力しましたか?可能であればコピーして貼り付けてください。その最後の "else if"にカッコがないように見えます。それ以外の場合は、常に1が返されます。 –
デバッガの使い方を学んでください。デバッガがなくてもそれほど遠くには行きません。 – zvrba