C++:返回矩阵中给定数字的行和列,函数 新手C++程序员使用Visual Studio 2013 .< /P>
我想写一个函数,在这里我可以插入一个数字,它会检查这个数字的正上方、下方或旁边是否有一个零,然后返回零的位置 例如,如果我想检查数字2在1,1处的周围环境,我想让它返回0在1,2处的位置。我该怎么做呢?我是否应该使用矩阵字段而不是int a[],例如 在我的例子中,该函数将用于确定数字(比如2)是否能够和另一个数字零交换位置,并且它只能在零正上方、下方或旁边进行交换C++:返回矩阵中给定数字的行和列,函数 新手C++程序员使用Visual Studio 2013 .< /P>,c++,puzzle,C++,Puzzle,我想写一个函数,在这里我可以插入一个数字,它会检查这个数字的正上方、下方或旁边是否有一个零,然后返回零的位置 例如,如果我想检查数字2在1,1处的周围环境,我想让它返回0在1,2处的位置。我该怎么做呢?我是否应该使用矩阵字段而不是int a[],例如 在我的例子中,该函数将用于确定数字(比如2)是否能够和另一个数字零交换位置,并且它只能在零正上方、下方或旁边进行交换 3 5 6 8 9 2 0 7 1 8 9 3 1 3 5 7 这是到目前为止我的代码,它只会创建一个向量矩阵抱歉,如果我使用了
3 5 6 8
9 2 0 7
1 8 9 3
1 3 5 7
这是到目前为止我的代码,它只会创建一个向量矩阵抱歉,如果我使用了不正确的术语,将1-15之间的数字随机化,并将其放置在一行col,然后将所选行col中的一个数字替换为0,并使用函数集_zero
#include "stdafx.h"
#include <iostream>
#include <cstdlib>
#include <iomanip>
#include <vector>
using namespace std;
void set_zero(int row, int column, vector<vector<int>>& v){
v[row][column] = 0;
}
void scan_zero(vector<vector<int>>& v){
}
int _tmain(int argc, _TCHAR* argv[])
{
const int x = 4;
vector<vector<int>> v(x, vector<int>(x));
for (int i = 0; i < x; i++){
for (int j = 0; j < x; j++){
v[i][j] = rand() % 15 + 1;
}
}
set_zero(1, 2, v);
for (int i = 0; i < x; i++){
for (int j = 0; j < x; j++){
cout << setw(3) << v[i][j] << " ";
}
cout << endl;
}
}
我试着在网上搜索类似的东西,但我没有找到,我肯定它在那里,但我只是不知道如何正确地表达搜索问题。是的,让我们尝试使用模拟矩阵的二维数组,int a[][]指的是二维矩阵 下面是您的示例:您希望检查相邻条目是否为零。让我们用你的例子,1,1等于2 一系列if语句可能是您的解决方案 设矩阵为一定大小的整数2d矩阵 如果矩阵[1][2]等于0,则 返回位置权 如果矩阵[1][0]等于0,则 返回位置左 如果矩阵[0][1]等于0,则 返回位置向上 如果矩阵[2][1]等于0,则 返回位置向下
因为您只检查直接相邻的索引,所以4 if语句检查相邻的零不是一个坏主意 我认为这可能是一个解决方案,不过感觉有点原始 因为我不知道如何返回两个值,所以我只做了两个函数,一个返回行的位置,一个返回列的零位置 当它超出矩阵的边界时,我也遇到了问题,所以因为我有一个4x4矩阵,所以我改为6x6,并用一个-1s的帧包围它
int scan_zero_r(int r, int c, vector<vector<int>>& v){
int l = r + 1, k = r - 1;
if (v[l][c] == 0)
return l;
if (v[k][c] == 0)
return k;
else
return r;
}
int scan_zero_c(int r, int c, vector<vector<int>>& v){
int l = c + 1, k = c - 1;
if (v[r][l] == 0)
return l;
if (v[r][k] == 0)
return k;
else
return c;
}
我不确定我是否理解你的问题。你的意思是你想使用?你是在问如何从键盘获取输入?@Streppel我想创建一个函数,在其中插入一个整数x,该函数将从x搜索相邻的数字,并检查其中是否有零。如果是这样,它应该返回所说的零的位置。谢谢你的输入,它启发了我,我找到了一个可能的解决方案。