2016-10-23 3 views
-4

私はHackerRankを使用しています。これはパラメータにそれぞれ4つの数字(3、4、6、5)を入力しています。プログラムは6(b)の代わりに3(a)を出力し、どこが間違っているのか分かりません。C++がif文で間違った整数を返しています

#include <iostream> 
#include <cstdio> 
using namespace std; 

int max_of_four(int a, int b, int c, int d) { 
if ((a > b) && (a > c) && (a > d)) { 
    return a; 
} 
if ((b > a) && (b > c) && (b > d)) { 
    return a; 
} 
if ((c > b) && (c > a) && (c > d)) { 
    return a; 
} 
else { 
    return d; 
} 
} 

int main() { 
int a, b, c, d; 
scanf("%d %d %d %d", &a, &b, &c, &d); 
int ans = max_of_four(a, b, c, d); 
printf("%d", ans); 

return 0; 
} 
+2

ここでオンラインのコードジャッジエンジンに関する質問は控えてください。テストケースからどこに失敗したのかは誰にも分かりませんが、これは通常は公開されていないためです。テストしたものがあなたのローカル環境で実行されていたとしても、オンラインチャレンジに適用されるいくつかのエッジケースをテストすることができなかったかもしれません。創造的で見つけよう。さらに、オンラインコンテストを不正行為すること以外にも、長期的にそのような質問の価値はないと考えられ、何も学ばれていません。 –

+0

_if文の中でかっこを省略することができます。http://www.difranco.net/compsci/C_Operator_Precedence_Table.htm – PinaGamer

+0

@PinaGamer括弧は、式がより離散的になると思います。それは間違っていません。 –

答えて

1

2番目と3番目のreturn文は、bとcの代わりにaを返します。

2

代わりに、この簡単なバージョンがあります:ステートメント場合は、2番目と3番目に右の変数を返すされていません

int max_of_four(int a, int b, int c, int d) { 
    int max = a; 
    if(b > max) max = b; 
    if(c > max) max = c; 
    if(d > max) max = d; 

    return max; 
} 
0

を。 bとcを返します。

関連する問題