查找双精度数组中的第一个数字
Find the first number in double array
我有这个数组:
000000000
000000000
00-2000000
000000000
000000000
000000000
000000000
00000-2000
000000000
我想做的是从左到右,在每一行中,找到第一个出现的'-2'.我不想打印任何其他内容。
我试过这样,但它不起作用
while ((g[p1][p2] != -2) && (p1 < 9) && (p2 < 9))
{
if (p2 = 9) p1++;
else p2++;
}
这是一个 9x9 数组,我正在搜索其中的第一个 -2。
这是执行此操作的正确方法:
int p1, p2; //must be declared outside loop, otherwise they get deleted when it ends.
for(p1 = 0; p1 < 9; p1++)
for(p2 = 0; p2 < 9; p2++)
if(g[p1][p2] == -2) goto doneSearching;
doneSearching:
所有goto
仇恨者现在都可以抱怨你永远不应该使用goto
。你还是错了。像这样的情况是该语言完全goto
的原因之一,在这里使用它们是完全可以接受的。
如果你仍然坚定地认为你永远不能使用goto
,你可以通过把它移到一个单独的函数中来把它作为一个return
,就像这样:
template<typename E>
Pair<int, int> search(E[][] array, E target){
for(int p1 = 0; p1 < sizeof(array)/sizeof(*array); p1++)
for(int p2 = 0; p2 < sizeof(array[p1])/sizeof(*array[p1]); p2++)
if(target == array[p1][p2]) return Pair<int, int>(p1,p2);
}
更改:if (p2 = 9) p1++;
到 if (p2 == 8) p1++;
while ((g[p1][p2] != -2) && (p1 < 9) && (p2 < 9))
{
if (p2 == 8) {
p1++;
p2=0;
}
else p2++;
}
如果 p2 以 0 开头,则最后一个位置应为 8。
既然你标记了C++为什么不做这样的事情:
#include <iostream>
#include <string>
#include <vector>
int main(int argc, const char * argv[])
{
std::vector<std::string> rowStr;
// Import your data however you need to, below is just for example
rowStr.push_back("000000000");
rowStr.push_back("000000000");
rowStr.push_back("00-2000000");
rowStr.push_back("000000000");
rowStr.push_back("000000000");
rowStr.push_back("000000000");
rowStr.push_back("00000-2000");
rowStr.push_back("000000000");
std::string subString("-2");
for (size_t r = 0; r < rowStr.size(); r++) {
std::string binaryStr = rowStr.at(r);
if (binaryStr.find(subString) != std::string::npos) {
size_t c = binaryStr.find(subString);
std::cout << "row = " << r << "; col = " << c << std::endl;
}
}
return 0;
}
然后输出为:
row = 2; col = 2
row = 6; col = 5
while ((g[p1][p2] != -2) && (p1 < 9) && (p2 < 9))
{
if (p2 == 8){
p1++;
}
else p2++;
}
首先,您的代码是错误的,因为您使用的是=
运算符。= 运算符是为变量赋值,在这种情况下应该使用的运算符是 ==
这意味着同情心。
此外,您应该检查到 8,因为 c++ 中的数组从 0 开始。
相关文章:
- 代码以查找数组中的最大数字,但它仅将第一个数字显示为最大数字. 有人请告诉我为什么
- 我必须更改我的数字最后一个数字和第一个数字,但不要使用仅带有整数或循环的函数.例如从 12345 到 52341
- 为什么字符串流只读取整数中的第一个数字?如何使它只在空白处移动?
- 说单精度碰撞的第一个数字是 131072.02 是否正确?(阳性,将 2 位数字视为尾数)
- 如何在 c++ 中将第一个数字移动到数字的末尾
- C 搜索算法第一个数字= n
- 为什么我的数组只接受它们中的第一个数字
- 给定一个数字n,打印序列中大于或等于n的第一个数字
- 如何从文件中获取数字行并忽略第一个数字
- 打印由用户定义的数组,第一个数字确定单词的大小,第二个数字确定行的大小
- 两个非常大的数字的乘积的第一个数字
- for循环在将第一个数字放入数组后退出
- 查找双精度数组中的第一个数字
- 获取线 CIN 忽略输入中的第一个数字
- 默认值仅适用于 8 和 9.之后,它使用第一个数字并将其视为 1,2,3
- Atoi 仅返回 char* 参数的第一个数字
- 如何从C++文件中读取第一个数字
- c++中的随机数生成第一个数字不是随机的
- 如何打印输入的第一个数字?
- 计算文本文件每行的第一个数字