サイタプログラミングスクールC言語プログラミング入門講座 神奈川 楽しめるC言語セミナー レッスンノート データ集計プログラム作成(横軸に様々なデータを並べる)

データ集計プログラム作成(横軸に様々なデータを並べる)

C言語プログラミング入門講座のレッスンノート

レッスンノートって?レッスンノートって?

6/4のレッスン内容は、以下の通りです。

 ・ データ集計プログラム作成
  - 横軸に様々なデータを並べるソースコードの実装

□ データ集計プログラム作成

○ 横軸に様々なデータを並べるソースコードの実装

処理の中身としては、以下の通りです。

 ・ 3周繰り返すループ

  ・ 5周繰り返すループ

   ・ ファイルの最初行から最後行まで、以下の処理を繰り返す
    - 元データを読み込んで、内部データ(struct型データ)に格納する  (変更なし)
    - フィルタをかける (ここで集計対象外となった場合、continue)
    - 加算処理 (横軸に表示するデータが変更になったため、それに応じた変更を入れた)

   ・ 集計結果(データに応じて平均値・合計値のいずれか)の表示


前回は、集計結果の表示処理の途中まで作成しました。

表示処理は、これまで通りfprintf()というファイルへの書き込み用の標準関数を使っています。

今回は、このfprintf()の部分をfor文の中に入れてソースコードを完成させました。

表示させたいデータが配列に入っているので、それを利用して、

 for(i=0; i<13; i++) {
  fprintf(" (タイトル), %f, %f, %f, %f, %f, %u\n", a[i],b[i],c[i],d[i],e[i],f[i]);
 }

のようにしたわけです。

ただ、これだけだとタイトルの部分に同じ文字列が表示されてしまいます。

今回はこの部分も異なる文字列を表示させたいということで、表示対象の文字列を

 char *str[] = {"タイトルA", "タイトルB",....};

というデータにまとめて、上記のfor文を以下のようにしました。

 for(i=0; i<13; i++) {
  /* タイトル部分を書式指定%s にして、対象のデータにstrを指定 */
  fprintf(" %s, %f, %f, %f, %f, %f, %u\n", str[i], a[i],b[i],c[i],d[i],e[i],f[i]);
 }

・ 文字列データの宣言について

これまで、文字列データは

 char str[7] = "abcdef";

のように、char型の配列として扱ってきました。

一方で、文字列データはchar型へのポインタで扱うこともできます。この場合、

 char *str = "abcdef";

のように宣言します。

文字列データ自体は「先頭文字のアドレス」を意味する値を持っています。ポインタにはアドレスを示す値を入れるので、この書き方が可能なのです。


両者の違いは紙でお渡ししたノートに詳しく書きましたが、まとめると

 配列の場合: 元の文字列データをコピーしてから、コピーされたデータを使う
 ポインタの場合: 元の文字列データ自体をポインタで指して、その文字列データを使う

です。

今回のソースコード実装で用意した文字列の配列は、文字列をchar型へのポインタで扱った上で、それを配列にしたということで、

 char *str[] ={ "タイトルA", "タイトルB",....};

と宣言したのです。
新着レッスンノート

10/18 のレッスン内容は、以下の通りです。  ・ 自動売買プログラム作成   - 問題点の対処   - 前回作成したソースコードの動作確認   - 3つ以上の数値を同時に比較する場合の注意 詳細は、レッスン内で別途お渡ししたノートおよびノートPCに保存したソースファイルを...

10/17 のレッスンの内容は、以下の通りです。  ・ 本レッスンの導入部  ・ 情報処理の基礎知識   - バイトとビット   - 2進数での負の値の取り扱い方  ・ C言語の文法学習   - 変数と型 なお、詳細は別途お渡ししたノートも参照してみてください。 □...

10/17 のレッスン内容は、以下の通りです。  ・ C++の文法   - テンプレートクラス   - string型 詳細は、別途レッスン内でお渡ししたノートやノートPCに保存したソースファイル参照してください。 □ C++の文法 ○ テンプレートクラス テ...

10/14のレッスン内容は、以下の通りです。  ・ C言語の練習問題   - 繰り返し文の強制終了   - その他 詳細はレッスン中にお渡ししたノートを参照してください。 □ C言語の練習問題 今回は、  ・ 繰り返し文の強制終了  ・ その他 に関す...

10/13のレッスンの内容は、以下の通りです。  ・ ラベリングの番号付け直し 今回のレッスンの詳細は、レッスン中に別途お渡ししたノートやメッセージに添付したソースファイルも参照してください。 □ ラベリングの番号付け直し 1始まりでラベリング済みのCSVを入力とし、0...

レッスンノート ページ先頭へ