質問編集履歴

2

誤字修正

2020/05/02 03:20

投稿

hanzo5555
hanzo5555

スコア2

title CHANGED
File without changes
body CHANGED
@@ -27,7 +27,7 @@
27
27
  int a4 = ArrayBsearch(a, High[4], WHOLE_ARRAY, 0, MODE_ASCEND);
28
28
  int a5 = ArrayBsearch(a, High[5], WHOLE_ARRAY, 0, MODE_ASCEND);
29
29
 
30
- Print(a0,a1,a2,a3,a4,a5); //本来、012345となるはずが、00005と、最後の値しか検索できていない
30
+ Print(a0,a1,a2,a3,a4,a5); //本来、012345となるはずが、00005と、最初と最後の値しか検索できていない
31
31
 
32
32
  //以下は全く同じ処理をHigh[]を使わずに実数で処理した場合。これは想定どおりに動きます。
33
33
 

1

コードのミスを修正して、もう少しわかりやすく編集しました。

2020/05/02 03:20

投稿

hanzo5555
hanzo5555

スコア2

title CHANGED
File without changes
body CHANGED
@@ -8,42 +8,50 @@
8
8
 
9
9
  ### 該当のソースコード
10
10
 
11
+ ```MQL4
11
12
  int OnInit()
12
13
  {
13
14
 
14
- //うまくいかないパターン
15
- double a[4];
15
+ double a[6];
16
- a[0] = High[1];
16
+ a[0] = High[0];
17
- a[1] = High[2];
17
+ a[1] = High[1];
18
- a[2] = High[3];
18
+ a[2] = High[2];
19
+ a[3] = High[3];
19
- a[2] = High[4];
20
+ a[4] = High[4];
21
+ a[5] = High[5];
20
22
 
23
+ int a0 = ArrayBsearch(a, High[0], WHOLE_ARRAY, 0, MODE_ASCEND);
21
- int b1 = ArrayBsearch(a, High[1], WHOLE_ARRAY, 0, MODE_ASCEND);
24
+ int a1 = ArrayBsearch(a, High[1], WHOLE_ARRAY, 0, MODE_ASCEND);
22
- int b2 = ArrayBsearch(a, High[2], WHOLE_ARRAY, 0, MODE_ASCEND);
25
+ int a2 = ArrayBsearch(a, High[2], WHOLE_ARRAY, 0, MODE_ASCEND);
23
- int b3 = ArrayBsearch(a, High[3], WHOLE_ARRAY, 0, MODE_ASCEND);
26
+ int a3 = ArrayBsearch(a, High[3], WHOLE_ARRAY, 0, MODE_ASCEND);
24
- int b4 = ArrayBsearch(a, High[4], WHOLE_ARRAY, 0, MODE_ASCEND);
27
+ int a4 = ArrayBsearch(a, High[4], WHOLE_ARRAY, 0, MODE_ASCEND);
28
+ int a5 = ArrayBsearch(a, High[5], WHOLE_ARRAY, 0, MODE_ASCEND);
25
29
 
26
- Print(" b1 is ",b1,"(←返るべき値は0), b2 is ",b2,"(←返るべき値は1), b3 is ",b3,"(←返べき値2) b4 is ",b4,"(←返るべきは4)");
30
+ Print(a0,a1,a2,a3,a4,a5); //本来、012345となるはずが、00005と、最後のしか検索できていない
27
31
 
28
- //うまくいくパターン
29
- //全く同じ処理をHigh[]を使わずに実数で処理した場合。これは想定どおりに動きます。
32
+ //以下は全く同じ処理をHigh[]を使わずに実数で処理した場合。これは想定どおりに動きます。
30
33
 
31
- double c[4];
34
+ double c[6];
32
- c[0] = 106.891;
35
+ c[0] = 106.890;
33
- c[1] = 106.892;
36
+ c[1] = 106.891;
34
- c[2] = 106.893;
37
+ c[2] = 106.892;
35
- c[3] = 106.894;
38
+ c[3] = 106.893;
39
+ c[4] = 106.894;
40
+ c[5] = 106.895;
36
41
 
42
+ int c0 = ArrayBsearch(c, 106.890, WHOLE_ARRAY, 0, MODE_ASCEND);
37
- int d1 = ArrayBsearch(c, 106.891, WHOLE_ARRAY, 0, MODE_ASCEND);
43
+ int c1 = ArrayBsearch(c, 106.891, WHOLE_ARRAY, 0, MODE_ASCEND);
38
- int d2 = ArrayBsearch(c, 106.892, WHOLE_ARRAY, 0, MODE_ASCEND);
44
+ int c2 = ArrayBsearch(c, 106.892, WHOLE_ARRAY, 0, MODE_ASCEND);
39
- int d3 = ArrayBsearch(c, 106.893, WHOLE_ARRAY, 0, MODE_ASCEND);
45
+ int c3 = ArrayBsearch(c, 106.893, WHOLE_ARRAY, 0, MODE_ASCEND);
40
- int d4 = ArrayBsearch(c, 106.894, WHOLE_ARRAY, 0, MODE_ASCEND);
46
+ int c4 = ArrayBsearch(c, 106.894, WHOLE_ARRAY, 0, MODE_ASCEND);
47
+ int c5 = ArrayBsearch(c, 106.895, WHOLE_ARRAY, 0, MODE_ASCEND);
41
48
 
42
- Print(" d1 is ",d1,"(←返るべき値は0), d2 is ",d2,"(←返るべき値は1), d3 is ",d3,"(←返るべき値は2) d4 is ",d4,"(←返るべき値4)");
49
+ Print(c0,c1, c2,c3,c4,c5); //こちら想定通り、012345と表示される
43
50
 
44
51
  return(INIT_SUCCEEDED);
45
52
  }
53
+
46
-
54
+ ```
47
55
  ### 試したこと
48
56
 
49
57
  NormalizeDoubleで、小数点以下をあわせてもうまくいきませんでした。