• 締切済み

プログラミングの問題が分かりません。どなたか助けて

こんな問題が出たのですがまったくもってわかりませんだれか助けてください センサーから入力される符号付き8ビット(char)の入力を一定期間ため込み,値が入力される度に,その平均値を計算し続けるシステムを考える.実装の方法にはいろいろ種類があるが,ここでは,配列をリングバッファとして利用する.リングバッファは,実際にデータを蓄える buffer という名の char 型の配列,最後にサンプル値を代入した位置を示す変数 pos という名の int 型の変数および現在のデータの総和を示す int 型変数 sum を要素に持つ構造体で作成する.リングバッファに値が挿入されるときは,以下の作業を行う. pos を一つ増やす pos がバッファのサイズを超えていたら pos を 0 にする sum から pos の位置のバッファの値を引く リングバッファに挿入したい値を pos の位置のバッファに書く 今挿入した値を sum に足す sum をバッファの長さで割り算して平均値を出力する ここでは,効果的な計算のために,リングバッファのサイズを 128 とする.そのため,変数 pos は 0 から 127 までの値を持つことになる. という問題でこのプログラムを書いてみたいのですがわかりません どなたか教えてくれませんか?

みんなの回答

回答No.3

質問の中で何がわからないのか不明です。 質問の内容は完全に理解していますか? 平均値を出力するとありますが、出力の方法は何ですか?メモリのどこかの格納するのみですか? 使用言語は何ですか?C?C++?センサ情報の入力方法(命令語)が不明です。

回答No.2

googleなどで、「リングバッファ」もしくは「循環バッファ」などで検索してみると参考となりそうサイトがいくつか出てきますよ。 C言語を使われるなら、「C言語」も検索ワードに追加してみるといいかもしれません。 http://okgnz.web.fc2.com/scam/scam07.htm プログラムの参考サイト、プログラムを書く際に参考にしてください。 http://www.s-cradle.com/developer/sophiaframework/sf_reference/sec.buffer.SFXRingBuffer.html Cではありませんが、イメージとしては、このサイトの図がわかりやすいかもしれません。 図のwが、課題のposに相当すると思います。 図のrはおそらく課題の文中にないように思われるので、rは作成せず、 wが128個書き終わったら、上書きしていく形になると思います。 配列(bufferという名前の)を128個作ってやって、一番したまでいったら、上にもどるように、してやればいいと思います。文中のposがバッファイサイズを超えたらposを0にする似相当。 あとの細かいところはプログラムの参考サイト等を参考に考えてください。

回答No.1

まず、出題された文章の、それぞれの行をCのプログラムに書き直してみましょう。 1行ずつだったら、まずは何とかなるでしょう。 実際には、その前後の処理が必要だったり、全体的のにどのような形でまとめるかとか、結構面倒な点もありますが。