2017-01-30 4 views
-4

Imプログラミングには新しく、finalResult変数を返すときに問題があるようですが、メインに戻すたびにtrueまたはfalseしかし、私が2番目の関数で出力すると正しい答えが得られますが、 "* result"と何か関係がありますか?boolの値をメインC++に戻しても常に返答に関係なくtrueを返す

次のように私は私の先生から受けた質問だった...

「配列、配列の大きさと 検索値への参照を渡すことができる機能hasValueは。関数が返す必要があります真の検索値が

#include <iostream> 
#include <algorithm> 
using namespace std; 
bool HasValue(int number, long length, int arr[], bool finalResult); 
int main(int argc, const char* argv[]) 
{ 

    int num, arr[10] = { 1, 2, 3, 4, 5, 6, 7, 8, 9, 10 }; 
    bool result; 
    auto array_length = end(arr) - begin(arr); //size of array 
    cout << "enter number: "; 
    cin >> num; 
    HasValue(num, array_length, arr, result); 
    cout << result << "\n"; 

    return 0; 
} 
bool HasValue(int number, long length, int arr[], bool finalResult) 
{ 

    int* end = arr + length; 
    int* result = find(arr, end, number); 
    if (result != end) 
     finalResult = true; 
    else 
     finalResult = false; 

    return finalResult; 
} 

私はおそらく、本当に愚かな何かをやっているが、私はそれを見つけるカント、任意のヘルプははるかに高く評価され、配列」

はので、私はこれを書いたに存在する場合、事前にあなたに感謝。

+3

あなたは本当にばかげたことをしました。あなたは何かに 'result'を設定しませんでした。 – immibis

+0

ここに 'HasValue'関数全体があります:' return std :: find(arr、arr + length、number)!= array + length; ' – PaulMcKenzie

+0

ありがとう、私は気付かなかった、 "0"として – Dean

答えて

2

あなたのHasValue関数は、それに渡された値がfinalResultで何もしません(これは不確かな値を渡すので良いと思います)。そして、あなたのコールサイトは値HasValueが返って何もしません。 HasValueの戻り値を使用するか、または参考としてfinalResultを渡してください。

+0

ご協力いただきありがとうございます。完璧に動作します。 – Dean

関連する問題