• 締切済み

c言語の問題です。logに関してのプログラムです

10個のdBの値があるとしてそれを足していくプログラムを作りたいと考えています。 10個それぞれ打ち込んでいくやり方もありますが長くなるのでfor文等を用いたいと考えています。 例えば、 int main(void){ doouble va{10,20,30,40,50,60,70,80,90,100}; double ans; ans=? } として?のところをどのようにするか悩んでいます また、例えば20と10の値の足し算ならば 10.0 * log10(pow(10.0,(25.0/10.0))+pow(10.0,(25.0/10.0))) という計算式です。 回答よろしくお願いします。

みんなの回答

  • Tacosan
  • ベストアンサー率23% (3656/15482)
回答No.5

本質的ではないところにフォローすると, 実際には dB といっても 純粋な比 (の常用対数の 10倍) という意味だけではなく ある絶対的な量に対する比率 (の常用対数の 10倍) という意味もあります (使う場面による)>#4. なので, この計算式 (注: これは質問者自身が考えたものではない) が必ずしも「誤り」ということにはなりません. まあ, その説明もなくこう書くのは不親切ですけどね.

回答No.4

本質的ではないところでの回答ですが、そもそも、dB値を足すのなら、単に、「加算」でいいというのが普通なのですが、計算式がずいぶんと不思議ですね。 たとえば(以下、例として「電圧比」で計算 2倍は、3.01dB 3倍は、4.77dB 4倍は、6.02dB ということなので、2倍×3倍×4倍 = 24倍の 13.80dB が、 3.01 + 4.77 + 6.02 = 13.80 という加算で求められるというのが、dB の性質だと思うのですが。

  • kmee
  • ベストアンサー率55% (1857/3366)
回答No.3

一つ訂正です。 > doouble va{10,20,30,40,50,60,70,80,90,100}; > は、「正しい」プログラムですが、「あなたの期待するプログラム」ではありません → 正しいプログラムではありませんでした。見間違い、思い違いがありました。

  • kmee
  • ベストアンサー率55% (1857/3366)
回答No.2

まず doouble va{10,20,30,40,50,60,70,80,90,100}; は、「正しい」プログラムですが、「あなたの期待するプログラム」ではありません。 「カンマ演算子」について調べましょう。 「あなたが期待するプログラム」にするには、「配列の初期化」を調べましょう。 > また、例えば20と10の値の足し算ならば > 10.0 * log10(pow(10.0,(25.0/10.0))+pow(10.0,(25.0/10.0))) > という計算式です。 20dBと10dBはどこに出てくるのですか? 元の計算式が判っているのなら、単純にC言語風に書き換えるだけです。

  • Tacosan
  • ベストアンサー率23% (3656/15482)
回答No.1

「それらの数値を全て加える」というプログラムだったとしたら, どう書きますか?

関連するQ&A