2017-06-20 79 views
-6

我一直试图在过去2个小时内调试此代码。该函数应该简单地在数组元素中找到目标。 这是一个问题:在阵列中查找目标int

//写入一个函数,它的原型如下: bool f2(int a[], int N, int target); 的功能测试目标是否出现的整数数组a(大小N的)在至少一个时间。如果 是,则该函数返回true;否则,它返回false。 使用定义五个整数数组的主程序测试函数,并在主程序中初始化它们 ,调用函数f2()并基于返回值f2()显示适当的消息。

#include <iostream> 
using namespace std; 
bool f2(int a[], int n, int target, int& index); 

int main(){ 
    int arr[5]; 
    int target; 
    int index = 0; 

    cout << " Enter array elements: " << endl; 
    for (int i = 0; i < 5; i++) 
    { 
     cout << " x[" << i << "]: "; 
     cin >> arr[i]; 
    } 

    cout << " Enter target to search for : "; 
    cin >> target; 

    if (f2(arr, 5, target, index)) 
     cout << " Target " << target << " found in index " << index << endl; 
    else 
     cout << " NOT found ! " << endl; 

    return 1; 
} 

bool f2(int a[], int N, int target, int& index){ 

    int j = 0; 
    while (j < N) 
    { 
     if (target == a[j]) { 
      index = j; 
      cout << "list[" << j << "]" << endl; 
      return true; 
     } 
     return false; 
     j++; 
    } 
} 
+3

你忘了你的问题... – Rakete1111

+2

此外,很明显你没有使用调试器。 –

+0

顺便说一句,你的原型不符合要求 – Jarod42

回答

1

return false;应该是外循环,否则你只是测试第一个元素:

bool f2(int a[], int N, int target, int& index) 
{ 
    int j = 0; 
    while(j < N) 
    { 
     if (target == a[j]) { 
      index = j; 
      cout << "list[" << j << "]" << endl; 
      return true; 
     } 
     j++; 
    } 
    return false; // should be here 
} 
1
bool f2(int a[], int N, int target, int& index){ 

int j = 0; 
while(j<N) 
{ 
    if (target == a[j]) { 
     index = j; 
     cout << "list[" << j << "]" << endl; 
     return true; 
    } 


    j++; 
} 
return false; //should be here 

} 

你内环

0

返回false值作为其他成员的建议,return false;应在循环之外。

你可以使用递归来解决这个问题,但是由于πάντα-ῥεῖ[1]的建议,它不是一个好主意。它可能会导致快速更大阵列上的堆栈溢出错误。

bool checkNumber(int input[], int size, int target){ 
    if(size == 0){ 
     return false; 
    } 
    if(input[size-1] == target){ 
     return true; 
    } 
    bool answer = checkNumber(input, size-1, target); 
    return answer; 
} 
+0

递归很少是一个好主意。它可能会导致快速更大阵列上的堆栈溢出错误。 –

+0

@πάνταῥεῖ谢谢您的宝贵意见。我是一个初学者,认为这可能会给OP一个解决给定问题的新途径。我会更新答案。 –