質問するログイン新規登録

回答編集履歴

1

追記

2021/12/08 04:17

投稿

fana
fana

スコア12236

answer CHANGED
@@ -16,4 +16,48 @@
16
16
 
17
17
  > int A[i] = Val[i+1] - Val[i];
18
18
 
19
- という記述も既に怪しいので,まずは文法を復習されるのが良いかと.
19
+ という記述も既に怪しいので,まずは文法を復習されるのが良いかと.
20
+
21
+ ---
22
+
23
+ [追記]
24
+ 上記の配列 `B` を作る部分: `var B = A.Where( a => a>500 ).ToArray();`
25
+ を,もっと素朴に(?)書くとしたら,以下のようになるであろうか.
26
+
27
+ ```
28
+ //何か Val という配列があって,そこに値が入っており…
29
+ var Val = new double[]{ 1, 550, 500, 3.0, 777, 7 };
30
+
31
+ //V の隣り合う要素の値の差を要素値とする配列 A を作る(配列 A 自体の必要性の有無は質問文から読み取れないが)
32
+ var A = new double[Val.Length-1];
33
+ for( int i=0; i<A.Length; ++i ){ A[i] = Val[i+1] - Val[i]; }
34
+
35
+ //---(↑ここまでは同じ↑)---
36
+
37
+ //結果を格納する配列 B を用意する.
38
+ //要素数をいくつとして用意すればよいのか? → 考えられる最大値としておく.
39
+ var B = new double[ A.Length ];
40
+
41
+ {//Bの中身を作る処理
42
+
43
+ //この変数 AssignIndex は
44
+ //次の要素を B のどこに入れれば良いのか? というindex値である.
45
+ //言い方を変えれば「Bにこれまで入れた要素の個数」でもある.
46
+ int AssignIndex = 0;
47
+
48
+ //配列 A の全ての要素について値を調べて,条件に該当するものを B に入れる.
49
+ foreach( double a in A )
50
+ {
51
+ if( a > 500 )
52
+ {
53
+ B[ AssignIndex ] = a;
54
+ ++AssignIndex;
55
+ }
56
+ }
57
+
58
+ //配列 B のサイズを修正する.
59
+ //ここまでで B には AssignIndex[個] の要素を入れたのだから,
60
+ //B のサイズを AssignIndex に修正する.
61
+ Array.Resize( ref B, AssignIndex );
62
+ }
63
+ ```