この課題についてなのですが、ここからの回答がわかりません。丁寧に教えてくださいますようよろしくお願いします。#include\u0026lt;stdio.h\u0026gt;int main(){FILE *fp, *fout;float hiniti,kabuka;int count;fp=fopen(\u0026quot;chart1.txt\u0026quot;,\u0026quot;r\u0026quot;);fout=fopen(\u0026quot;chart2.txt\u0026quot;,\u0026quot;w\u0026quot;);while(1){count=fscanf(fp,\u0026quot;%f %f\u0026quot;,\u0026amp;hiniti,\u0026amp;kabuka);\u0026quot;if(count==EOF) break;

1件の回答

回答を書く

1203951

2026-03-16 07:40

+ フォロー

移動平均値を求める関数です。



平均値を求める領域を確保する

例えば。

double buffer[5];

以下の関数の引数にbufferの先頭アドレスとサイズを渡す。



別途chart1でデータを取得する際に1日ごとにループすると思うが

そのループカウンターと取得した株価データを関数に渡してあげればOKです。



5日移動平均値を求める場合

4回目までは、0が帰ってきます。

5回目(日目)から、5分の平均値が帰ってきます。



double movingAverage(/*buffer*/double* buf ,/*buffer size*/const size_t bufSize ,/*what's day average*/const size_t dateCount ,const double stockPrice){

double sum;

if(dateCount \u0026lt; bufSize - 1){

*(buf + dateCount) = stockPrice;

return 0;

}else if(dateCount == bufSize -1){

sum = *(buf + (bufSize - 1)) = stockPrice;

}else{

for(size_t i = 1;i \u0026lt; bufSize;++i){

*(buf + (i - 1)) = *(buf + i);

}

sum = *(buf + (bufSize - 1)) = stockPrice;

}



for(size_t i = 0;i \u0026lt; bufSize - 1;++i){

sum += *(buf + i);

}

return sum / bufSize;

}

うったえる有益だ(0シェアするブックマークする

関連質問

Copyright © 2026 AQ188.com All Rights Reserved.

博識 著作権所有