- ベストアンサー
ファイルのデータの平均と標準偏差を求める課題
- ファイルのデータを読み込んで平均と標準偏差を求める課題です。
- 途中でいきずまってしまい解決策がわからないと困っています。
- 課題は関数を使って解決する必要があります。
- みんなの回答 (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 ); ←ここで平均と標準偏差 ・上記を参考に頑張って下さい。
その他の回答 (2)
- HotaruT
- ベストアンサー率17% (5/28)
まず、fscanfの第2引数は"%lf"にしないと動かない気がします。 そして、そのfscanfで何度も同じポインタdataにデータを読み込んでも、 最後に読み込んだ1個だけしか残りません。 十分大きな配列を用意して、順に格納しましょう。 (もしくはmalloc, callocを使う)
補足
%がなかったですねっ(>_<) すみませんっ! No.1の方にも言われたのでmallocも使いました! ですが、関数と合わせると良くわからなくなってしまいます。
- koko_u_
- ベストアンサー率18% (459/2509)
とりあえず、data の指す場所に double いっこ分の領域しか確保していないのですが。 しかもコメントアウトされてしまっているし。
補足
あ、すみません… 忘れてました(^_^;)
お礼
ありがとうございます!出来ました(*^_^*) MAX_COUNTとかにしてbreak;でやれば簡単ですね! とても参考になりました!