#include<iostream>
using namespace std;
int main()
{
int f[5][5], k = 1, n;
for (int p = 0; p<5; p++)
{
cout << "Enter Elements Of Rows: " << k << endl;
k++;
for (int m = 0; m<5; m++)
{
cin >> f[p][m];//It take's rows as input
}
}
//What should i do now because i can't understand how to print the index of n element.
cout << "Enter the number you want to search: ";
cin >> n;
//What should i do after this to get the index of the number n?
}
这段代码非常适合将行作为输入,但是当涉及索引时,一切都非常错误。搜索和工作了很多,但无法找到任何东西。
答案 0 :(得分:1)
如果您的意思是将1D索引转换为2D索引,那么这样做:
int x = n % 5;
int y = n / 5;
假设这种格式:
0 1 2 3 4
5 6 7 8 9
9 10 11 12 13
14 15 16 17 18
19 20 21 22 23
然后使用以下方式访问它:
int result = f[x][y];
答案 1 :(得分:0)
由于您没有关于元素可能位置的任何信息,我建议您只进行线性搜索(意思是:查看每个元素并检查它是否是您要查找的元素)。
基本思想是你完成了与你已经完全相同的嵌套循环,但你做的是检查而不是插入,如下所示:
...
...
cout << "Enter the number you want to search: ";
cin >> n;
for (int p = 0; p<5; p++)
{
for (int m = 0; m<5; m++)
{
if (f[p][m]==n){
cout << "found " << n << " at " << p << " " << m << "\n";
}
}
}
...
...
这真的只是一个非常基本的想法。
一些暗示要考虑的事项:
我希望你能自己从这里继续。
改进代码的一些想法:
int d = 5
一样。然后使用d
初始化数组并打破for循环。k
与您的p
密切相关。也许你总是可以使用p
?我会让你弄清楚如何。答案 2 :(得分:0)
简单蛮力实施的例子:
#include<iostream>
#include<vector>
#include<utility>
using namespace std;
int main()
{
int f[5][5], k = 1, n;
for (int p = 0; p<5; p++)
{
cout << "Enter Elements Of Rows: " << k << endl;
k++;
for (int m = 0; m<5; m++)
{
cin >> f[p][m];//It take's rows as input
}
}
cout << "Enter the number you want to search: ";
cin >> n;
vector<pair<int, int> > result;
for (int p = 0; p<5; p++)
{
for (int m = 0; m<5; m++)
{
if (n == f[p][m]) result.push_back(pair<int, int>(p, m));
}
}
cout << "Search results:" << endl;
for (std::vector<std::pair<int, int> >::iterator it = result.begin(); it != result.end(); it++)
{
cout << "[" << it->first << "][" << it->second << "]" << endl;
}
return 0;
}