回答編集履歴

1

追記

2021/12/08 04:17

投稿

fana
fana

スコア11708

test CHANGED
@@ -35,3 +35,91 @@
35
35
 
36
36
 
37
37
  という記述も既に怪しいので,まずは文法を復習されるのが良いかと.
38
+
39
+
40
+
41
+ ---
42
+
43
+
44
+
45
+ [追記]
46
+
47
+ 上記の配列 `B` を作る部分: `var B = A.Where( a => a>500 ).ToArray();`
48
+
49
+ を,もっと素朴に(?)書くとしたら,以下のようになるであろうか.
50
+
51
+
52
+
53
+ ```
54
+
55
+ //何か Val という配列があって,そこに値が入っており…
56
+
57
+ var Val = new double[]{ 1, 550, 500, 3.0, 777, 7 };
58
+
59
+
60
+
61
+ //V の隣り合う要素の値の差を要素値とする配列 A を作る(配列 A 自体の必要性の有無は質問文から読み取れないが)
62
+
63
+ var A = new double[Val.Length-1];
64
+
65
+ for( int i=0; i<A.Length; ++i ){ A[i] = Val[i+1] - Val[i]; }
66
+
67
+
68
+
69
+ //---(↑ここまでは同じ↑)---
70
+
71
+
72
+
73
+ //結果を格納する配列 B を用意する.
74
+
75
+ //要素数をいくつとして用意すればよいのか? → 考えられる最大値としておく.
76
+
77
+ var B = new double[ A.Length ];
78
+
79
+
80
+
81
+ {//Bの中身を作る処理
82
+
83
+
84
+
85
+ //この変数 AssignIndex は
86
+
87
+ //次の要素を B のどこに入れれば良いのか? というindex値である.
88
+
89
+ //言い方を変えれば「Bにこれまで入れた要素の個数」でもある.
90
+
91
+ int AssignIndex = 0;
92
+
93
+
94
+
95
+ //配列 A の全ての要素について値を調べて,条件に該当するものを B に入れる.
96
+
97
+ foreach( double a in A )
98
+
99
+ {
100
+
101
+ if( a > 500 )
102
+
103
+ {
104
+
105
+ B[ AssignIndex ] = a;
106
+
107
+ ++AssignIndex;
108
+
109
+ }
110
+
111
+ }
112
+
113
+
114
+
115
+ //配列 B のサイズを修正する.
116
+
117
+ //ここまでで B には AssignIndex[個] の要素を入れたのだから,
118
+
119
+ //B のサイズを AssignIndex に修正する.
120
+
121
+ Array.Resize( ref B, AssignIndex );
122
+
123
+ }
124
+
125
+ ```