• ベストアンサー
※ ChatGPTを利用し、要約された質問です(原文:fileのデータを読みこむ)

ファイルのデータの平均と標準偏差を求める課題

このQ&Aのポイント
  • ファイルのデータを読み込んで平均と標準偏差を求める課題です。
  • 途中でいきずまってしまい解決策がわからないと困っています。
  • 課題は関数を使って解決する必要があります。

質問者が選んだベストアンサー

  • ベストアンサー
  • Oh-Orange
  • ベストアンサー率63% (854/1345)
回答No.3

★malloc、free について int main( void ) {  double *data;    if ( (data = (double*)malloc(sizeof(double) * MAX_COUNT)) != NULL ){   /*   ここに[データ読み込み]~[平均と標準偏差の表示]を記述   */   free( data );  }  return( 0 ); } 解説: ・最初に、全データが格納できるだけの数で malloc 関数でメモリを確保します。→1000個分など。  その後、最大 1000 個分のデータを for 文内で fscanf より取得します。 ・データの取得する fscanf の指定は『fscanf( "%lf", &data[i] );』の方が分かりやすい気がします。  もちろん、ポインタですので『data + i』でも構いませんがカッコくらいは付けましょう。  int max;    for ( max = 0 ; max < MAX_COUNT ; max++ ){   if ( fscanf(fp,"%lf",&data[max]) != 1 ){    break;   }   printf( "%.16f\n", data[max] );  }  average_stddev( data, max ); ←ここで平均と標準偏差 ・上記を参考に頑張って下さい。

apple_cube
質問者

お礼

ありがとうございます!出来ました(*^_^*) MAX_COUNTとかにしてbreak;でやれば簡単ですね! とても参考になりました!

その他の回答 (2)

  • HotaruT
  • ベストアンサー率17% (5/28)
回答No.2

まず、fscanfの第2引数は"%lf"にしないと動かない気がします。 そして、そのfscanfで何度も同じポインタdataにデータを読み込んでも、 最後に読み込んだ1個だけしか残りません。 十分大きな配列を用意して、順に格納しましょう。 (もしくはmalloc, callocを使う)

apple_cube
質問者

補足

%がなかったですねっ(>_<) すみませんっ! No.1の方にも言われたのでmallocも使いました! ですが、関数と合わせると良くわからなくなってしまいます。

  • koko_u_
  • ベストアンサー率18% (459/2509)
回答No.1

とりあえず、data の指す場所に double いっこ分の領域しか確保していないのですが。 しかもコメントアウトされてしまっているし。

apple_cube
質問者

補足

あ、すみません… 忘れてました(^_^;)

関連するQ&A