如何找到给定变量的匹配项并在 2D 数组迭代时分配?
How to find match to given variable and assigning while 2D array iteration?
我有一个波纹管样式的数组 (2D)(只是一组虚拟数据);
int array [][]= {{1.0, 20.0},
{2.0, 40.0},
{3.0, 60.0},
{4.0, 80.0}}
我的程序中有另一个变量
double v = 3.2;
我现在想将数组中的col1值与值v进行比较。我想找到最接近v的值并将col2中的相应值分配为新变量new_v
所以对于上面的例子,我应该在下面;
因为v = 3.2并且最接近数组[3][1]位置的值3,所以我会分配如下;
double new_v = array[3][2];
你会如何解决这个问题?如果有人可以帮助我了解如何比较和找到最接近的值,那就太好了。 (如果使用 if 循环并查找是否完全匹配会更容易找到完全匹配,但这让我开始思考...)
如果能得到一些指点就好了!谢谢
我使用过 C#,因为您使用的似乎与该语言类似。但是,如果这让您难以理解我的方法,请随时告诉我哪种编程语言对您来说更容易理解。
我的方法如下:
double currentClosest = array[0][0];
for(int row = 0; row < array.Length; row++){
if(Math.Abs(v - array[row][0]) < Math.Abs(v - currentClosest)){
new_v = array[row][1];
currentClosest = array[row][0];
}
}
for 循环仅遍历每一行。然后将所述行中第一列与给定值 v 之间的绝对差异与保存的 currentClosest 的相同差异进行比较。如果第一列中的这个新值比当前最接近的值更接近,则代码将该值保存为新的 currentClosest 并将 new_v 设置为第二列中的相应值。
你可以try the whole scenario here.
我希望这能回答你的问题。
我有一个波纹管样式的数组 (2D)(只是一组虚拟数据);
int array [][]= {{1.0, 20.0},
{2.0, 40.0},
{3.0, 60.0},
{4.0, 80.0}}
我的程序中有另一个变量
double v = 3.2;
我现在想将数组中的col1值与值v进行比较。我想找到最接近v的值并将col2中的相应值分配为新变量new_v
所以对于上面的例子,我应该在下面;
因为v = 3.2并且最接近数组[3][1]位置的值3,所以我会分配如下;
double new_v = array[3][2];
你会如何解决这个问题?如果有人可以帮助我了解如何比较和找到最接近的值,那就太好了。 (如果使用 if 循环并查找是否完全匹配会更容易找到完全匹配,但这让我开始思考...)
如果能得到一些指点就好了!谢谢
我使用过 C#,因为您使用的似乎与该语言类似。但是,如果这让您难以理解我的方法,请随时告诉我哪种编程语言对您来说更容易理解。
我的方法如下:
double currentClosest = array[0][0];
for(int row = 0; row < array.Length; row++){
if(Math.Abs(v - array[row][0]) < Math.Abs(v - currentClosest)){
new_v = array[row][1];
currentClosest = array[row][0];
}
}
for 循环仅遍历每一行。然后将所述行中第一列与给定值 v 之间的绝对差异与保存的 currentClosest 的相同差异进行比较。如果第一列中的这个新值比当前最接近的值更接近,则代码将该值保存为新的 currentClosest 并将 new_v 设置为第二列中的相应值。
你可以try the whole scenario here.
我希望这能回答你的问题。