Re: [問題] 移動平均
※ 引述《et781120 (阿蘋)》之銘言:
: 移動平均的意思是:
: 例如有11筆資料,每三筆算一次的話:
: 資料 0 1 2 3 4 5 6 7 8 9 10
: 平均 a b c d e f g h i
: 則 a=(0+1+2)/3
: b=(1+2+3)/3
: c=(2+3+4)/3以此類推
: 我想問的是,我以下這樣算好像是錯的?
: (假設輸入m筆資料,移動平均是n筆算一次,a[]是輸入的值,b[]是移動平均值)
: sum=0;
: for(i=0;i<(m-n);i++){
如leiyan所提到的,sum=0必須要放在這裡才對
因為,是底下那個for迴圈在進行加總,所以放在這裡才能在每次加總前洗掉
: target=n+i-1;
: for(j=i; j<=target;j++){
: sum=a[j]+sum;
: }
: ave=sum/n;
這個寫法會有一點問題,如果sum和n都是整數,
那麼相除時,小數部分會被丟掉
例如,8/3會是2,而非2.666...
當然,如果sum和n至少有一個是double型別的話,就沒有這個問題
: b[target-1]=ave;
這邊也怪怪的
假設現在取n=3,外層跑到i=0,則target是3+0-1=2,
你又寫到b[target-1]去,好像跟上面舉的例子不太像@@
又,如果這個程式會連續跑很多次的話,
b沒有每次全部洗掉也會有問題,因為會讓新的資料,誤用舊的資料進行判斷
: }
: 謝謝!!!
作業due快到了,有問題歡迎來信詢問~~
題目是我出的,哪裡會出問題大概都推演過了~
--
※ 發信站: 批踢踢實業坊(ptt.cc)
◆ From: 140.114.88.70
推
04/23 01:22, , 1F
04/23 01:22, 1F
→
04/23 01:24, , 2F
04/23 01:24, 2F
→
04/23 01:25, , 3F
04/23 01:25, 3F
推
04/23 01:49, , 4F
04/23 01:49, 4F
推
04/23 09:49, , 5F
04/23 09:49, 5F
→
04/24 13:45, , 6F
04/24 13:45, 6F
討論串 (同標題文章)