- ベストアンサー
※ ChatGPTを利用し、要約された質問です(原文:ファイルからデータを読み込み平均値を求めるプログラムについて)
ファイルからデータを読み込み平均値を求めるプログラムについて
このQ&Aのポイント
- ファイルからデータを読み込み平均値を求めるプログラムについて
- C言語を学習し始めた方がファイルからデータを読み込み、氏名ごとのスコアの平均値を求めるプログラムを作成したいと考えています。条件分岐の方法や結果の出力方法について質問です。
- 質問者はC言語を学習し始めた者で、ファイルからデータを読み込み、氏名ごとのスコアの平均値を求めるプログラムを作成したいと考えています。具体的なプログラムの流れと条件分岐の方法についての質問です。
- みんなの回答 (1)
- 専門家の回答
質問者が選んだベストアンサー
あなたのおっしゃる条件分岐の部分を1行で書くことは難しいです。 1行で書くことが難しい処理がでてきたら関数化を考えるとよいと思います。 つまり、既に読み込んだ文字列データ群(配列)と今読み込んだ文字列データを引数として渡すと、初めての文字列のときはtrueを既に読み込んだことがある文字列のときはfalseを返す関数を作るのです。 この関数の作り方がわからないときは「探索アルゴリズム」ぐぐってみてください。ヒントが見つかるはずです。探索アルゴリズムにはいろいろありますが、一番単純な線形探索から実装してみることをお勧めします。慣れてきたらハッシュなども考えてみてください。 探索アルゴリズムは整数値を探索するサンプルが最初に出てくると思いますが、今回は文字列比較なので strcmpを調べてみてください。 追記 あなたのアルゴリズムで no→文字列の出た回数=文字列の出た回数+1 文字列.スコア=(文字列.スコア+スコア)/文字列の出た回数 の部分は間違っているように思われます。 例えば 西村 10 西村 10 西村 10 と言うデータの場合、このやり方では、 最初の西村を読み込んだとき、 点数は10となり、 2回目の西村を読み込んだとき、 文字列の出た回数が2回となるので (10+10)/2 で平均点10となります。ここまではよいのですが、 3回目の西村を読み込んだとき、 文字列の出た回数が3回となり、 (10+10)/3 で答えがおかしくなります。 ファイルを読み込みながら、点数を加えるとともに、出現回数をカウントUPし、 平均の計算は最後に1回計算すればよいのではないでしょうか
お礼
アドバイスとミスのご指摘ありがとうございます。 自分で思いつかなかったアルゴリズムを教えていただき大変参考になりました。 このアドバイスを参考に自分なりにプログラムを完成させたいと思います。 また、質問する機会があればよろしくお願いします。