程序检查2D数组中是否存在任何数字 [英] Program to check any number exist in 2D array
问题描述
我知道如何检查数组中是否存在数字,但 2D数组中不存在。
I know how to check if number exist in the array, but not in a 2D array.
请以二维帮助我。
#include<iostream>
using namespace std;
int main()
{
int a[3] = { 4,5,6 };
int b, c;
int x = 1, fact = 1;
cout << "enter no ";
cin >> b;
for (int i = 0; i < 3; i++)
{
if (b == a[i]) {
c = a[i];
break;
}
}
cout << "no entered is present" << endl;
}
推荐答案
我知道如何检查数组中是否存在数字,但不检查2D数组中是否存在数字!
I know how to check if number exist in the array, but not in 2D array!
就像您对一维数组所做的一样,而不是一个,您现在需要遍历行和列。换句话说,您需要再进行一次迭代。
It is like you did for the one-dimensional array, instead of one, you need to now iterate through the rows and column. In another word, you need one more iteration.
#include<iostream>
int main()
{
int a[2][3]{ { 1,2,3 }, { 4,5,6 } };
int userInput = 5;
bool found = false;
for (int row = 0; !found && row < 2; ++row) // if not found and row size < 2
{
for (int col = 0; col < 3; ++col) // if column size < 3
{
if (userInput == a[row][col]) // access the element like this
{
// other codes
std::cout << "No entered is present\n";
found = true;
break;
}
}
}
}
但是,我不建议这样使用行大小和列大小。您应该使用更好的 std :: array
(如果您在编译时知道大小),或者 std :: vector
(如果在运行时知道大小)。
However, using the row size and column size like this, I will not recommend so. You should be using better std::array
(if you know the size at compile time), or std::vector
(if the sizes are known at run time).
例如,使用 std :: array
,您可以使用以下代码(示例代码)。使用 基于范围的 -loop
,以及一个简单的函数使代码更具可读性且不易出错。另外,您需要知道编译时已知的大小。 (观看实时演示)
For example, using std::array
you could have the following code(example code). Using the range based for
-loop, and a simple function makes the code more readable and less error-prone. Also, you need to know the sizes known at compile time. (See live demo)
#include <iostream>
#include <array> // std::array
bool isIn2DArray(const std::array<std::array<int, 3>, 2>& arr, int val) /* noexcept */
{
// range based for-loop instead of index based looping
for (const std::array<int, 3> & row : arr)
for (const int element : row)
if (element == val)
return true; // if found in the array, just return the boolean!
return false; // if not found!
}
int main()
{
std::array<std::array<int, 3>, 2> a{ { { 1,2,3 }, { 4,5,6 } } };
int userInput = 5;
if (isIn2DArray(a, userInput)) // you call the function like this!
{
std::cout << "Found in the array!\n";
}
else
{
std::cout << "Didn't find!\n";
}
}
如果想知道,如何为任意数组提供 isIn2DArray
,方法是提供大小为非模板参数,如下所示。 (观看实时演示)
In case of wondering, how to provide isIn2DArray
for any arbitrary array, do it by providing the sizes as non-template parameters as below. (See live demo)
#include <array> // std::array
template<std::size_t Row, std::size_t Col>
bool isIn2DArray(const std::array<std::array<int, Col>, Row>& arr, int val)/* noexcept */
{
// range based for-loop instead of index based looping
for (const std::array<int, 3> & row : arr)
for (const int element : row)
if (element == val)
return true; // if found in the array, just return the boolean!
return false; // if not found!
}
这篇关于程序检查2D数组中是否存在任何数字的文章就介绍到这了,希望我们推荐的答案对大家有所帮助,也希望大家多多支持IT屋!