回答編集履歴

3

追記

2021/07/20 01:34

投稿

fana
fana

スコア11996

test CHANGED
@@ -90,13 +90,15 @@
90
90
 
91
91
  …という形(各処理の具体実装は無いけども,それらは何をして,結果としてどんなデータが得られるのか? という話だけは定まった状態)をまずは作ることをやると良いと思う.
92
92
 
93
+ (「穴埋め問題」状態のコードを作る,とでも言うか.)
94
+
93
95
 
94
96
 
95
97
  この疑似コード例では,度数分布データを配列Histogramで表現しているが,これが個別の10個の変数だったとしても,main関数内のコードは一切の影響を受けない.
96
98
 
97
99
  このデータを直接扱っているのは,UpdateHistogram, ShowHistogram の2つの関数の内側だけだからだ.
98
100
 
99
- (「最初にとりあえず個別の10個で実装してみて→次に配列版に挑戦してみる」とかいうことをするにしても,変更範囲は明確.)
101
+ こういう形にしておけば,「最初にとりあえず個別の10個で実装してみて→次に配列版に挑戦してみる」とかいうことをするにしても,変更範囲は明確.)
100
102
 
101
103
 
102
104
 

2

疑似コード追加

2021/07/20 01:33

投稿

fana
fana

スコア11996

test CHANGED
@@ -69,3 +69,131 @@
69
69
  段階は10段階必要だから,10個の数値データだ.
70
70
 
71
71
  (配列にすると自然だし楽だろうが,そのことはmustというわけではない.とにかく要件的には10個あればいい.)
72
+
73
+
74
+
75
+ ---
76
+
77
+
78
+
79
+ ↑の話を素直にコード化すれば,こんな形↓が書ける.
80
+
81
+ (1)で列挙した要素を関数とし,
82
+
83
+ (2)のフローをmain関数内に書いた.
84
+
85
+
86
+
87
+ あとは(どこかにミスが無ければ)各関数の中身を(好きなように)実装すればよい.
88
+
89
+
90
+
91
+ …という形(各処理の具体実装は無いけども,それらは何をして,結果としてどんなデータが得られるのか? という話だけは定まった状態)をまずは作ることをやると良いと思う.
92
+
93
+
94
+
95
+ この疑似コード例では,度数分布データを配列Histogramで表現しているが,これが個別の10個の変数だったとしても,main関数内のコードは一切の影響を受けない.
96
+
97
+ このデータを直接扱っているのは,UpdateHistogram, ShowHistogram の2つの関数の内側だけだからだ.
98
+
99
+ (「最初にとりあえず個別の10個で実装してみて→次に配列版に挑戦してみる」とかいうことをするにしても,変更範囲は明確.)
100
+
101
+
102
+
103
+ ```C
104
+
105
+ //度数分布データ.※ここでは話を簡単にするために外部変数としている.
106
+
107
+ int Histogram[10] = { 0 };
108
+
109
+
110
+
111
+ //点数を1個入力してもらう処理.
112
+
113
+ //入力された値を返す.
114
+
115
+ int Input(){ /*scanfなり何なりで入力された値をreturnする*/ }
116
+
117
+
118
+
119
+ //度数分布データの更新処理.
120
+
121
+ //引数に,入力された点数を渡す.
122
+
123
+ void UpdateHistogram( int input_val ){ /*引数値に応じて,配列 Histogram のどれかの要素を1増やす*/ }
124
+
125
+
126
+
127
+ //度数分布データの表示処理
128
+
129
+ void ShowHistogram(){ /*配列 Histogram の内容を仕様通りに表示する*/ }
130
+
131
+
132
+
133
+ //終了すべきか?の判定処理.
134
+
135
+ //引数に,入力された点数を渡す.
136
+
137
+ //引数が「終了すべき値」なら1を,そうでないなら0を返す.
138
+
139
+ int IsFinishRequest( int input_val )
140
+
141
+ { //※この例では,負の値か100より大きい値のときは終了っていうルール
142
+
143
+ return ( (input_val<0 || 100<input_val) ? 1 : 0 );
144
+
145
+ }
146
+
147
+
148
+
149
+ //----------
150
+
151
+ //main
152
+
153
+ int main( void )
154
+
155
+ {
156
+
157
+ //1.初期処理
158
+
159
+ // (Histogramは全0に初期化できているので,この例では特にやることはない)
160
+
161
+
162
+
163
+ while( 1 ) //繰り返す( "5.次の入力のために2.に戻る" に相当 )
164
+
165
+ {
166
+
167
+ //2.入力
168
+
169
+ int input_val = Input();
170
+
171
+
172
+
173
+ //3.終了判定
174
+
175
+ if( IsFinishRequest(input_val) == 1 )break;
176
+
177
+
178
+
179
+ //4.度数分布データを更新
180
+
181
+ UpdateHistogram( input_val );
182
+
183
+ }
184
+
185
+
186
+
187
+ //6.度数分布データを表示
188
+
189
+ ShowHistogram();
190
+
191
+
192
+
193
+ //7.プログラム終了
194
+
195
+ return 0;
196
+
197
+ }
198
+
199
+ ```

1

誤変換修正

2021/07/20 01:31

投稿

fana
fana

スコア11996

test CHANGED
@@ -36,7 +36,7 @@
36
36
 
37
37
  2. とりあえず1個入力
38
38
 
39
- 3. 終了判定.例えば「入力値の値が何か特な値XXXだったら,終了という意味」とかいうルールを決めて,終了条件を満たすなら6.に進む
39
+ 3. 終了判定.例えば「入力値の値が何か特な値XXXだったら,終了という意味」とかいうルールを決めて,終了条件を満たすなら6.に進む
40
40
 
41
41
  4. 入力値を用いて度数分布データを更新
42
42