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

回答編集履歴

3

追記

2021/07/20 01:34

投稿

fana
fana

スコア12229

answer CHANGED
@@ -44,10 +44,11 @@
44
44
  あとは(どこかにミスが無ければ)各関数の中身を(好きなように)実装すればよい.
45
45
 
46
46
  …という形(各処理の具体実装は無いけども,それらは何をして,結果としてどんなデータが得られるのか? という話だけは定まった状態)をまずは作ることをやると良いと思う.
47
+ (「穴埋め問題」状態のコードを作る,とでも言うか.)
47
48
 
48
49
  この疑似コード例では,度数分布データを配列Histogramで表現しているが,これが個別の10個の変数だったとしても,main関数内のコードは一切の影響を受けない.
49
50
  このデータを直接扱っているのは,UpdateHistogram, ShowHistogram の2つの関数の内側だけだからだ.
50
- (「最初にとりあえず個別の10個で実装してみて→次に配列版に挑戦してみる」とかいうことをするにしても,変更範囲は明確.)
51
+ こういう形にしておけば,「最初にとりあえず個別の10個で実装してみて→次に配列版に挑戦してみる」とかいうことをするにしても,変更範囲は明確.)
51
52
 
52
53
  ```C
53
54
  //度数分布データ.※ここでは話を簡単にするために外部変数としている.

2

疑似コード追加

2021/07/20 01:33

投稿

fana
fana

スコア12229

answer CHANGED
@@ -33,4 +33,68 @@
33
33
  * 度数分布データは何はともあれ必要だよね.
34
34
  これは上記処理順序の1.~6.までの間存在し続けて,更新されるデータだ.
35
35
  段階は10段階必要だから,10個の数値データだ.
36
- (配列にすると自然だし楽だろうが,そのことはmustというわけではない.とにかく要件的には10個あればいい.)
36
+ (配列にすると自然だし楽だろうが,そのことはmustというわけではない.とにかく要件的には10個あればいい.)
37
+
38
+ ---
39
+
40
+ ↑の話を素直にコード化すれば,こんな形↓が書ける.
41
+ (1)で列挙した要素を関数とし,
42
+ (2)のフローをmain関数内に書いた.
43
+
44
+ あとは(どこかにミスが無ければ)各関数の中身を(好きなように)実装すればよい.
45
+
46
+ …という形(各処理の具体実装は無いけども,それらは何をして,結果としてどんなデータが得られるのか? という話だけは定まった状態)をまずは作ることをやると良いと思う.
47
+
48
+ この疑似コード例では,度数分布データを配列Histogramで表現しているが,これが個別の10個の変数だったとしても,main関数内のコードは一切の影響を受けない.
49
+ このデータを直接扱っているのは,UpdateHistogram, ShowHistogram の2つの関数の内側だけだからだ.
50
+ (「最初にとりあえず個別の10個で実装してみて→次に配列版に挑戦してみる」とかいうことをするにしても,変更範囲は明確.)
51
+
52
+ ```C
53
+ //度数分布データ.※ここでは話を簡単にするために外部変数としている.
54
+ int Histogram[10] = { 0 };
55
+
56
+ //点数を1個入力してもらう処理.
57
+ //入力された値を返す.
58
+ int Input(){ /*scanfなり何なりで入力された値をreturnする*/ }
59
+
60
+ //度数分布データの更新処理.
61
+ //引数に,入力された点数を渡す.
62
+ void UpdateHistogram( int input_val ){ /*引数値に応じて,配列 Histogram のどれかの要素を1増やす*/ }
63
+
64
+ //度数分布データの表示処理
65
+ void ShowHistogram(){ /*配列 Histogram の内容を仕様通りに表示する*/ }
66
+
67
+ //終了すべきか?の判定処理.
68
+ //引数に,入力された点数を渡す.
69
+ //引数が「終了すべき値」なら1を,そうでないなら0を返す.
70
+ int IsFinishRequest( int input_val )
71
+ { //※この例では,負の値か100より大きい値のときは終了っていうルール
72
+ return ( (input_val<0 || 100<input_val) ? 1 : 0 );
73
+ }
74
+
75
+ //----------
76
+ //main
77
+ int main( void )
78
+ {
79
+ //1.初期処理
80
+ // (Histogramは全0に初期化できているので,この例では特にやることはない)
81
+
82
+ while( 1 ) //繰り返す( "5.次の入力のために2.に戻る" に相当 )
83
+ {
84
+ //2.入力
85
+ int input_val = Input();
86
+
87
+ //3.終了判定
88
+ if( IsFinishRequest(input_val) == 1 )break;
89
+
90
+ //4.度数分布データを更新
91
+ UpdateHistogram( input_val );
92
+ }
93
+
94
+ //6.度数分布データを表示
95
+ ShowHistogram();
96
+
97
+ //7.プログラム終了
98
+ return 0;
99
+ }
100
+ ```

1

誤変換修正

2021/07/20 01:31

投稿

fana
fana

スコア12229

answer CHANGED
@@ -17,7 +17,7 @@
17
17
 
18
18
  1. 初期処理.(度数分布データの値を全部0にしとくとか,そういう.)
19
19
  2. とりあえず1個入力
20
- 3. 終了判定.例えば「入力値の値が何か特な値XXXだったら,終了という意味」とかいうルールを決めて,終了条件を満たすなら6.に進む
20
+ 3. 終了判定.例えば「入力値の値が何か特な値XXXだったら,終了という意味」とかいうルールを決めて,終了条件を満たすなら6.に進む
21
21
  4. 入力値を用いて度数分布データを更新
22
22
  5. 次の入力のために2.に戻る
23
23
  6. 度数分布データを表示