回答編集履歴

1

コードの最小限の変更で実行できるコードを追加しました。

2022/01/02 03:28

投稿

kkokuke
kkokuke

スコア32

test CHANGED
@@ -61,3 +61,165 @@
61
61
 
62
62
 
63
63
  ```
64
+
65
+
66
+
67
+ 追記です。
68
+
69
+
70
+
71
+ C#では、変数は、クラスメンバーとして扱わないと、スコープの問題で苦労するので、使い回すプロジェクトであれば、現実的には、クラス設計をし直すことになります。
72
+
73
+ 一方、Cなどの関数型のプログラムを、C#で処理したい、その場でしか使わないプログラムなど、極力手を加えたくない場合があります。
74
+
75
+
76
+
77
+ その場合は、作法的にはよろしくないと思いますが、単純に、クリックイベントにすべてを格納する方法が一番ラクです。
78
+
79
+
80
+
81
+ ```C#
82
+
83
+ using System;
84
+
85
+ using System.Windows.Forms;
86
+
87
+
88
+
89
+ namespace ShowDecimals
90
+
91
+ {
92
+
93
+ public partial class Form1 : Form
94
+
95
+ {
96
+
97
+ public Form1()
98
+
99
+ {
100
+
101
+ InitializeComponent();
102
+
103
+ }
104
+
105
+
106
+
107
+ public void button1_Click(object sender, EventArgs e)
108
+
109
+ {
110
+
111
+ double s;
112
+
113
+ var Val = new int[] { 20,21,24,324,345,344,23,22,21,327,344,322,21,21,21,329,344,321,21,21,21,323,345,344,21,21,21,324,344,344,21,21,21,21,
114
+
115
+ 326,344,345,21,21,21,21,344,322,321,324,21,21,21,21,21 };
116
+
117
+
118
+
119
+ //Valの隣り合う要素の値の差を要素値とする配列 A を作る
120
+
121
+ var A = new int[Val.Length - 1];
122
+
123
+
124
+
125
+ int[] C = new int[101];
126
+
127
+ for (int i = 0; i < A.Length; ++i)
128
+
129
+ {
130
+
131
+ A[i] = Val[i + 1] - Val[i];
132
+
133
+ }
134
+
135
+ //配列Aの要素の中から295より大きいものを配列retに代入していく
136
+
137
+ // int[] ret = Array.FindAll(A, num => num > 295);
138
+
139
+
140
+
141
+ int n = 0;
142
+
143
+ for (int i = 0; i < A.Length; i++)
144
+
145
+ {
146
+
147
+
148
+
149
+ if (A[i] >= 295)
150
+
151
+ {
152
+
153
+ C[n] = i; n = n + 1;
154
+
155
+ }
156
+
157
+ }
158
+
159
+
160
+
161
+
162
+
163
+ //配列 ret の隣り合う要素の値の差を要素値とする配列 hip を作る
164
+
165
+ var hip = new int[C.Length - 1];
166
+
167
+ for (int i = 0; i < hip.Length; ++i)
168
+
169
+ {
170
+
171
+
172
+
173
+ hip[i] = C[i + 1] - C[i];
174
+
175
+ }
176
+
177
+
178
+
179
+ //配列 hip の要素から奇数番目の要素を取り出す
180
+
181
+ int[] B = new int[3];
182
+
183
+ double l = 0;
184
+
185
+ for (int i = 0; i < B.Length; ++i)
186
+
187
+ {
188
+
189
+ B[i] = hip[i * 2];
190
+
191
+ }
192
+
193
+
194
+
195
+ for (int i = 0; i < B.Length; ++i)
196
+
197
+ {
198
+
199
+ l += B[i];
200
+
201
+ }
202
+
203
+
204
+
205
+ s = l / 50 * 0.01;
206
+
207
+
208
+
209
+ textBox1.Text = Convert.ToString(s);
210
+
211
+ }
212
+
213
+ }
214
+
215
+
216
+
217
+ }
218
+
219
+
220
+
221
+ ```
222
+
223
+
224
+
225
+ ![イメージ説明](d84542d11a6b1b6ec7ddcac80e2343d7.gif)