我正在努力完成作业,但是出了点问题。
如果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“
如果找不到所需元素: 输出将是:
“在数组中找不到所需的数字!”
答案 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];
}
}