前提
c言語でn日でのm日間単純移動平均のプログラムを書いています。
計算そのものは合っていると思うのですが、2つめのfor文においてi=31からx[i]の値がy[m-1]以降に置き換わってしまっています。
(例 m=20のときx[31]=10と入力しているにもかかわらず、計算の結果y[19]=15となるとx[31]=15と表示される。)
xに代入している訳でもないので全く原因が分かりません。
更に言うとfree関数を最後に入れるとsegmentation faultとなるのですが、それの原因も分かりません。
特に前者ですが、ご教授お願いします。
該当のソースコード
c
#include<stdio.h>#include<stdlib.h>int main(){int n, m;double *x, *y;scanf("%d %d", &n, &m); x=(double *)malloc(n);y=(double *)malloc(n); for(int i=0; i<n; i++) scanf("%lf", &x[i]); for(int i=m-1; i<n; i++){ double sum=0; for(int j=0; j<m; j++){ sum=sum+x[i-j]; } y[i]=sum/m; printf("%d %.2lf %.2lf\n", i+1, x[i], y[i]);}return 0;}
0 コメント