2016-07-26 1 views
-5

こんにちはこれは私の割り当てコードです。else 'and' 'or'

すべてのダイスが等しいかどうかテストする最初の "if"、またゲームのラウンド数に等しい。

すべてのダイスが等しいかどうかをテストするための第2の "else if"が、ラウンド番号と等しくないかどうかをテストします。

少なくとも1つのダイスがラウンドナンバーと等しくないかどうかをテストする第3の "else if"。

第4番目は、丸数字に等しいサイコロをテストすることです。

注:単にテスト文にprintfする

しかし、今ではプログラムは4つを与えます。私はそれを修正し、このコードをより良く書くことができますか?

int dice1=1, dice2=1, dice3=1, round=3, point=0; 

    if( (dice1 == dice2) && (dice2 == dice3) && (dice1 == dice3) && (dice1 == round)) printf("1");   
    else if( (dice1 == dice2) && (dice2 == dice3) && (dice1 == dice3) && (dice1 == round)) printf("2");  
    else if(dice1==round ? point++ : point || dice2==round ? point++ : point || dice3==round ? point++ : point) printf("3"); 
    else printf("4"); 
+1

あなたの最初の2つの条件が同一です。また、なぜ条件の内部で増分を実行しようとしていますか? – csmckelvey

+0

申し訳ありませんが、サイコロです!=ラウンド – aaa

+0

プログラミングに慣れていないことに感謝しますが、質問をする前にこれを見てみるべきです:http://stackoverflow.com/help/how-to-ask –

答えて

1

私はあなたが、等しいがトリガするために、ラウンドに等しくないすべてのサイコロを第二の条件を期待している推測しています。しかし、あなたはまだチェックしている:

dice1 == round 

私は。これは最初のif checkとまったく同じです。また、むしろ1 == 2、2 == 3、1 == 3をチェックするよりも、あなただけチェックすることができ:

1 == 2 && 2 == 3 

をそれは1も同じ3場合の両方の条件がtrueに評価しなければならない場合を意味しているので。

0
if ((dice1 == dice2) && (dice2 == dice3) && (dice1 == round)) { 
    printf("1"); 
} else if ((dice1 == dice2) && (dice2 == dice3) && (dice1 != round)) { 
    printf("2"); 
} else if ((dice1 != round) || (dice2 != round) || (dice3 != round)) { 
    printf("3"); 
} else if ((dice1 != round) && (dice2 != round) && (dice3 != round)) { 
    printf("4"); 
} 
0

あなたの第三の文では、あなたがポイントの値が0から1まで増加することを意味し、ポイント++(ポストインクリメント)を使用している0
にポイントを初期化した時点
の値をチェックしている場合ifチェックの後。あなたはpoint ++ではなく++ pointを使って修正することができます。
すなわちプリインクリメントであろう、とによって確認された値が1であるならば代わりの0

1
if(dice1 == dice2 && dice2 == dice3) { 
    if(dice1 == round) 
     printf("1"); 
    else 
     printf("2"); 
} 
else if(dice1 != round || dice2 != round || dice3 != round) 
    print("3"); 
else fi(dice1 != round && dice2 != round && dice3 != round) 
    print("4");