- ベストアンサー
初心者です。。
1,2,3,4,5,6,7と数字が縦に並んでいる「a.txt」と いうファイルの平均を計算した「a1.txt」という ファイルを出力するプログラムを作りたいです。 本当は、何個数字があるか分からない場合のものを 作りたいと思っているのですが、まずは数字は 7個の場合から作ってみようと思い、 以下のようなプログラムを組んでみました。 # include <stdio.h> # define M 6 int main(void) { int i; FILE *fp; double s[M]; double snew[M]; fp = fopen("a.txt","r"); if(fp == NULL) { puts( "MISS" ); return 1; } for(i=0;i<M+1;i++){ fscanf( fp, "%lf", &s[i] ); } snew[0]=(s[0]+s[1])/2; snew[M]=(s[M-1]+s[M])/2; for(i=1;i<M;i++){ snew[i]=(s[i-1]+s[i]+s[i+1])/3; } fp = fopen("a1.txt","w"); if(fp == NULL) { puts( "MISS" ); return 1; } for(i=0;i<M+1;i++){ fprintf(fp,"%lf\n",snew[i]); } fclose( fp ); return 0; } snew[0]とsnew[M]は端っこなので片一方だけの平均を とるようにしているのですが、なぜかうまく値が でてきてくれません。いろいろ原因を探ってみた のですがわかりません。 何かアドバイスがあればお願いします。 後、何個数字があるかわからない場合、 配列をあらかじめ確保できないのですが、 そのような場合はどうすればよいかも 教えてください。 すいませんが、よろしくお願いします。
お礼
ほんと初心者ですね・・。 実際ここが現レベルでは一番問題なのかと。 ありがとうございます!!