如何调用函数来搜索2D数组中的元素?

时间:2019-06-11 09:18:56

标签: c++

我正在努力完成作业,但是出了点问题。

如果2D数组位于主函数中,并且我想调用一个函数,则该函数的任务是在2D数组中搜索元素,用户可以在2D数组中输入所需的元素。如果找到了所需的元素,则调用一个函数以查找其阶乘,然后将结果打印到主函数中;否则,调用另一个函数以显示未找到所需的元素。

我已经使用Visual Studio 2019和Dev C ++尝试了代码行。

我的程序执行了大约13项任务,这些任务由Switch语句组织起来, 而执行该任务的案例是案例编号9。

但是一旦我输入了元素,我想在控制台中进行搜索。 如果元素存在于数组中,则输出始终显示如下: ”  第3个位置:4  3的阶乘为:6 3 ” 用户是否输入3或其他数字。

即使没有找到,输出也一样。

#include <iostream>
using namespace std;

// declaring a function to search within B1 array.
int search_B1(int[][3], int, int);  

// declaring a function to find the fatorial of the found element.
int fact_num(int);

// declaring a function to print out a searching error.
void search_error();

// This is the main function. Program execution begins and ends here.
int main()
{
     int B1[3][3], i, j;

     cout << " - Please enter the elements of B1 array: \n";
for (i = 1; i <= 3; i++)
{
    for (j = 1; j <= 3; j++)
    {
        cout << "B1[" << i << "]" << "[" << j << "] = ";
        cin >> B1[i][j];
    }
}
...
...
...
    case 9:
{
    int num;
    cout << endl << " Enter the element to search in B1 array: ";
    cin >> num;
    cout << endl << search_B1(B1, 3, num) << endl;
    break;
}
}

/**********************************************************************/

// This function is called when user inserts '9'
int search_B1(int B1[][3], int num , int)
{
    int i, j, flag = 0;

    for (i = 1; i <= 3; i++)
    {
        for (j = 1; j <= 3; j++)
        {
            if (num == B1[i][j])
            {
                flag = 1;
                cout << " Number " << num << " Found at position: " << j + 1 << endl;
                fact_num(num);
                break;
            }
        }
    }

    if (flag == 0)
    {
    search_error();
}
return num;
}
/**********************************************************************/

// This function relates to ' search_B1 ' function.
int fact_num(int num)
{
int fact = 1, f;
for (f = 1; f <= num; f++)
{
    fact *= f;
}
cout << " Factorial of " << num << " is: " << fact;
return fact;
}
/**********************************************************************/

// This function relates to ' search_B1 ' function.
void search_error()
{
cout << " The wanted number was not Found in the array!";
}
/**********************************************************************/

我希望搜索的输出像这样: 例: 如果用户将数组的元素输入为“ 1 2 3 4 5 6 7 8 9”,并搜索了元素“ 9”

如果发现了想要的元素:    输出将是:

“数字9在以下位置找到4  9阶乘是:362880“

如果找不到所需元素:    输出将是:

“在数组中找不到所需的数字!”

1 个答案:

答案 0 :(得分:1)

您有不确定的行为来填充和搜索数组

for (i = 1; i <= 3; i++) // B[3][j] is never an element
{
    for (j = 1; j <= 3; j++) // B[i][3] is never an element

数组索引从0开始。如果要显示索引从1开始,请在输出中进行算术

for (i = 0; i < 3; i++)
{
    for (j = 0; j < 3; j++)
    {
        std::cout << "B1[" << (i + 1) << "]" << "[" << (j + 1) << "] = ";
        std::cin >> B1[i][j];
    }
}