特集PC技術

納得C言語

 

[第18回]演習問題Ⅴ

これまで学んだきたことをフルに使って総合演習を行いましょう。
次の工程を経て、成績表を作ってみよう


1 成績表の構造体を作る

(1)学籍番号、氏名、学年、クラス、点数をメンバに持つ構造体を作ります。
なお、点数も構造体とし、英・国・数・理・社の点数をメンバに持ちます。
構造体のイメージにすると下のような図になります。

構造体のイメージ(点数は入れ子にする)

ここに以下のメンバの点数を初期化で格納し、表示させるプログラムを書いてください。

成績表

結果 こんな感じになればOKです

成績表の表示


演習問題Ⅴ 第1問のヒント


1 成績表の構造体を作る

この問題は第15回の演習問題(1)と同じようなプログラムです。
やったことを思い出しながら書いてみよう。
もし忘れてしまったら第15回の演習問題(1)を確認しなおそう。


演習問題Ⅴ 第1問の解答


演習問題Ⅴ 第2問

これまで学んだきたことをフルに使って総合演習を行いましょう。


2 機能別に振り分ける

(1)のプログラムに表示機能と入力機能とに分けてメニューから番号を振り分けましょう。
以下の仕様通りに作ってみよう。
・メニュー選択で0を選択するとプログラムが終了する。
・入力機能は1回の選択で複数のデータを入力でき、学生番号に0を入力したら入力を終了させメニュー選択に戻る。

データ入力時

成績表にデータを入力

データ表示時

成績表のデータ表示


演習問題Ⅴ 第2問のヒント


2 機能別に振り分ける

1.表示機能と入力機能はそれぞれ自作関数に、メニューはmain関数に分けてみよう
(以後の問題で新しい機能を追加する時は自作関数を作っていきます)。
2.構造体の宣言はmain関数で行い、各々の自作関数には構造体のポインタを参照渡しで自作関数に渡します。


演習問題Ⅴ 第2問の解答


演習問題Ⅴ 第3問

これまで学んだきたことをフルに使って総合演習を行いましょう。


3 データ保存機能の追加

(2)のプログラムに入力したデータを保存する機能を付けましょう。

結果

データを保存する


演習問題Ⅴ 第3問のヒント


3 データ保存機能の追加

1.入力した構造体のデータを保存する時はファイル入出力のfopen( ), fprintf( ), fclose( )を使います
2.ファイルを開く処理(fopen( ))のところは必ずエラー処理も一緒に記述しましょう。
3.何も値が入っていない構造体は整数型の値は0、文字列の値は何も入っていないのを利用してファイルへの書き込みの終了条件にしてください。


演習問題Ⅴ 第3問の解答


演習問題Ⅴ 第4問

これまで学んだきたことをフルに使って総合演習を行いましょう。


4 データ読込機能の追加

(2)で保存したデータを読み込む機能を付けましょう。

結果

データを読込む


演習問題Ⅴ 第4問のヒント


4 データ読込機能の追加

1.入力した構造体のデータを読み込む時はファイル入出力のfopen( ), fscanf( ), fclose( )を使います。
2.何も値が入っていない構造体は整数型の値は0、文字列の値は何も入っていないのを利用してファイルへの書き込みの終了条件にしてください。ただし、判定する場所に気をつけてください。
3.(2)の機能と合わせるために読み込んだ後の構造体に格納されている生徒数をカウントする必要があります。カウントの方法は各自が最適だと思った方法を使いましょう。


演習問題Ⅴ 第4問の解答


演習問題Ⅴ 第5問

これまで学んだきたことをフルに使って総合演習を行いましょう。


5 平均点表示機能

それぞれの学年の総合得点の平均値を表示する機能を付けましょう。

結果

データを読込む


演習問題Ⅴ 第5問のヒント


5 平均点表示機能

学年ごとの平均を求めるには、全ての学年を抜き出す必要があります。
抜き出した学年を基に平均を出していきます。
抜き出す方法は各自出来る方法を用いるといいでしょう。
さらにどの学年に何人いるかというのも出しておく必要があります。
似たようなことを第15回の演習問題(3)で行っています。参考にしてみるといいでしょう。


演習問題Ⅴ 第5問の解答



あとがき

ここまでやり遂げた皆さん、お疲れ様でした。
今回で「納得C言語」の連載は終了となります。

連載で学習してきたC言語の知識はC言語全体のほんの一部に過ぎません。
この先には今よりさらに高い壁が立ちはだかっております。
ここまで学習してきた皆さんなら、次のステップに進んでも問題ないでしょう。
あとはアナタの努力次第!!!

最後に...
今まで、「納得C言語」を学習して頂き本当にありがとうございました。
またどこかでお会いしましょう。

コメントの投稿


画像の中に見える文字を入力してください。

トラックバックURL

http://www.isl.ne.jp/cgi-bin/mt/mt-tb.cgi/1085

pagetopこのページの先頭へ戻る