配列使い方2:参考ページ 、ポインタ操作:参考ページ

配列の基本的な使い方2
(任意個数を管理する)応用問題 ステップ1

 目標作品のプログラム仕様 

次の実行例のように任意個数の入力後、入力データの表示を行い、 希望の入力データの個数を表示するプログラムです。(赤の文字が入力)
まず『iarray.txt』のファイルが存在しないときの実行例です。
●入力は、数字以外の入力で終わる繰り返しです。(入力促進メッセージの左端番号は、入力に使うキーで連番です。)
●表示は、入力した順番で表示します。

0:DATA>5
1:DATA>2
2:DATA>6
3:DATA>5
4:DATA>end
0:5
1:2
2:6
3:5
数えたい値>5
 5の値は、2個ありました。


●最後に、すべてのデータをファイル『iarray.txt』に保存します。
例えば、上記例のような入力を行った場合、右のように開くことができるファイルを作ります。

上記のような実行の後(ファイル『iarray.txt』がある状態で)、再び実行した時の実行結果は次のよう にします。
ファイルから読み取って以前のデータを表示後に、キー入力して表示します。
そして すべてのデータをファイル『iarray.txt』に保存して終了します。

0:5
1:2
2:6
3:5
4:DATA>4
5:DATA>5
6:DATA>2
7:DATA>end
0:5
1:2
2:6
3:5
4:4
5:5
6:2
数えたい値>2
 2の値は、2個ありました。

 プログラム作成ステップ1 

まず、目標の仕様を分析して、主要な識別子(変数など名前をつけるもの)を決めます。
●複数の数をたくさん扱うためには、配列で記憶領域をたくさん作る必要があります。
 配列の名前を決めます→iarray

●データの個数が不確定であるということは、十分は配列の要素数で宣言する必要があります。
 あとで変更しやすいように、#defineで文字並びに数値を定義して、それを使います。
 要素数を意味する文字並びをISIZEにして、これに512を定義します。
 (仕様にないのでとりあえず設定した値です)

●取り扱うデータの個数が、入力により変化するということは、その入力個数を管理する変数が必要です。
 その変数の名前を決めます→icount

以上までは、このような仕様のプログラミングを行う場合で、 配列に先頭から順番に詰めて管理する場合に必要な取り決めの定石です。

以下で、私が進める思考のステップを示します。 今後、分からない時は、このような考えで進めることを、まねしてください。

どうしたらよいか分からない場合は、はじめからに全部作ろうとしないことです。
目的の実行を行わせるために、分かる範囲で考えて少しでも動かしてみることです。
するとこの場合、入力の繰り返しと、表示の繰り返し部分を実現することから作るのがよいでしょう。
それでも分からない場合は、日常的に頭の中で行う手順を、分けられないぐらいに細分化し、 その一つずつに対応するコードを単純に並べてみることです。

例えば、3回入力後に、3回出力できるようするような次コードになるでしょう。 新しい変数を作らないで、に完成させてみましょう。■■■■が変更箇所です。エディタ直下の指示に従って変更ください。


←上記()の指示で編集した後に クリックください。
(考える練習です。わからない場合は答えクリックください。)

上のコードを、実際にプログラム開発ができる環境で、実行させ確認後に、上記を変更するのがよいでしょう。
←答えを見て、学習してから作るのもよいでしょう

わかならい場合は、このように、最初から繰り返しを考えないことです。
単純に10行でも100行でも10000行でもよいから並べてみることです。
それで少しの動作も実現できないのであれば、それは作る目標が実現できないものなのです。 なお私でも過去に作ったことがないような問題は、必ずこれをします。
もしそれでも作れない場合、まだ規則が理解できていないか?  日常生活において、手順を細かく分析できない人になります。
(それが今できなくても訓練で克服できます。 プログラミングに限らず、このような手順分析能力は計画書作成、取り扱い説明書の構成立案、 作業マニュアル作成、企画分析など、ほとんどの仕事で必要な能力となります。 私はプログラミングの自分で考えて記述する作業は、このような能力向上の練習になっていると考えています