我在使用ArrayBsearch函数时遇到问题...

菲尔
63
菲尔  

Here is my script code. It 不返回正确的值。

// + ----------------------------------------------- ------------------- +

// |测试2.mq4 |

// | MetaQuotes软件公司版权所有©2012。

//| http://www.metaquotes.net |

// + ----------------------------------------------- ------------------- +

#property版权 "MetaQuotes Software Corp.版权所有2012。"

#property link "http://www.metaquotes.net"


// + ----------------------------------------------- ------------------- +

// |脚本程序启动功能|

// + ----------------------------------------------- ------------------- +

int start()

{

// ----

int Array_A [10] = {5,7,3,1,2,6,6,9,8,10,4};

int Array_B [15] = {2,4,6,8,10,12,14,1,1,3,5,7,9,11,13,15};

int c1 [10];

整数句柄= FileOpen("C1.csv",FILE_CSV | FILE_WRITE,",");

如果(处理>0)

{

for(int j = 0; j<10; j++)

{

c1 [j] = ArrayBsearch(Array_B,Array_A [j],WHOLE_ARRAY,0,MODE_ASCEND);

FileWrite(handle,c1 [j]);

}

}

FileClose(handle);

// ----

返回(0);

}

// + ----------------------------------------------- ------------------- +

西蒙·尼亚德科夫斯基
17343
西蒙·尼亚德科夫斯基 2012.04.17 17:19:56  

发布之前,请阅读其他一些主题。 。 。那么您会看到很多这样的请求:

请使用它来发布代码。 。 。它使阅读更容易。

一个人
1863
一个人 2012.04.17 17:52:39  

在这里RaptorUK ...

// + ----------------------------------------------- ------------------- +
//| Test 2.mq4 |
//| MetaQuotes Software Corp.版权所有2012。 |
//| http://www.metaquotes.net |
// + ----------------------------------------------- ------------------- +
#property版权 "MetaQuotes Software Corp.版权所有2012。"
#property link "http://www.metaquotes.net"

// + ----------------------------------------------- ------------------- +
//| script program start function |
// + ----------------------------------------------- ------------------- +
int start()
{
// ----
int Array_A[10] = {5, 7, 3, 1, 2, 6, 9, 8, 10, 4} ;
int Array_B[15] = {2, 4, 6, 8, 10, 12, 14, 1, 3, 5, 7, 9, 11, 13, 15} ;
int c1[10] ;
int handle = FileOpen("C1.csv", FILE_CSV|FILE_WRITE, ",");
if(handle>0)
{
for(int j=0; j<10; j++)
{
c1[j]=ArrayBsearch(Array_B,Array_A[j],WHOLE_ARRAY,0,MODE_ASCEND);
FileWrite(handle, c1[j]) ;
}
}
FileClose(handle);
//---
return(0);
}
// + ----------------------------------------------- ------------------- +

你是什​​么意思"不返回正确的值。"。 ArrayBsearch返回是搜索到的数组的索引。我检查,这是正确的。

这是你要找的吗

c1[j]= Array_B [ArrayBsearch(Array_B,Array_A[j],WHOLE_ARRAY,0,MODE_ASCEND)];
威廉·罗德
24104
威廉·罗德 2012.04.17 19:14:51  
菲尔:

Here is my script code. It 不返回正确的值。

int Array_B [15] = {2,4,6,8,10,12,14,1,1,3,5,7,9,11,13,15};

c1 [j] = ArrayBsearch(Array_B,Array_A [j],WHOLE_ARRAY,0,MODE_ASCEND);


当然不是。 Array_B是 未排序。实时FM

注意:仅二进制搜索过程 排序数组。 要对数字数组进行排序,请使用ArraySort()函数

菲尔
63
菲尔 2012.04.17 22:32:21  
一个人:

在这里RaptorUK ...

你是什​​么意思"不返回正确的值。"。 ArrayBsearch返回是搜索到的数组的索引。我检查,这是正确的。

这是你要找的吗


我尝试过,但仍然无法给我正确的结果。

结果应该是

9

10

8

7

0...

我没有得到这些结果...

菲尔
63
菲尔 2012.04.17 22:37:34  
一个人:

在这里RaptorUK ...

你是什​​么意思"不返回正确的值。"。 ArrayBsearch返回是搜索到的数组的索引。我检查,这是正确的。

这是你要找的吗


弄清楚我要做什么。我需要在Array_A中找到每个值的索引值。

一个人
1863
一个人 2012.04.18 00:28:06  
菲尔:


我尝试过,但仍然无法给我正确的结果。

结果应该是

9

10

8

7

0...

我没有得到这些结果...

重新在版本409和419 Vista HB上运行。结果:9-10-8-0-0-9-11-10-11-8。您期望结果应该是:9-10-8-7-0-2-2-11-3-4-1 ?,因为如果是这样,那么我应该删除我之前的评论,现在我也不太明白,这很好,因为我不必回答问题:)

认为我们发现了错误:(

菲尔
63
菲尔 2012.04.18 02:02:12  
这些正是我期望的值。难道我做错了什么 ?
一个人
1863
一个人 2012.04.18 02:08:16  
菲尔:
这些正是我期望的值。难道我做错了什么 ?
不,菲尔您没有ArrayBsearch的任何麻烦,您没有做错任何事情,因此您不必为此感到内::)。
菲尔
63
菲尔 2012.04.18 15:19:08  

非常感谢你的帮助。我刚刚编写了一个循环程序以获得正确的结果。

我非常感谢您的帮助,意味着很多!!!!!!!!!!!!!!!!!!!!!!!!!!!!

一个人
1863
一个人 2012.04.18 15:29:27  
菲尔:

非常感谢你的帮助。我刚刚编写了一个循环程序以获得正确的结果。

我非常感谢您的帮助,意味着很多!!!!!!!!!!!!!!!!!!!!!!!!!!!!

别客气。 我从不使用 ArrayBsearch(),因为直到您在这里显示我,我才知道它是什么。