• 締切済み

C言語 RC回路

この問題自分でやってみたんですが、 デバッグするとエラーになってしまいます。 C言語を独学で勉強しているもので、 どなたか教えてくださると助かります。 コンデンサと抵抗の回路がある. 10Vで充電されたコン デンサ(0.01F)の両極 を100Ωの抵抗でつな いだ場合,2秒後の電 圧をシミュレーション (時間の刻み幅0.0001 秒=1.0e-4)により求めなさい。 C=0.01[F], R=100[Ω] #include "stdafx.h" #include"math.h" void main() { double c,r=100,v=10; double f,h,e; long n; double l,i, di, t; c=0.01*f; h=1.0e-4; while(n<2000) { di = e * h / l; e -= i * h / c; i += di; n++; } printf ("input initial voltage [V] = "); scanf ("%lf", &e); }

みんなの回答

  • tsunji
  • ベストアンサー率20% (196/958)
回答No.3

初期化されてい変数があるのに、その変数を計算式で使っちゃダメでしょ。 とにかく全部の変数について初期化値を設定する。

  • Wr5
  • ベストアンサー率53% (2173/4061)
回答No.2

どういうエラーが出るんでしょうか? >long n; >while(n<2000) nの値はwhile文にきた時の値っていくつでしょうか? 『値を設定していないローカル変数は不定値がとなっている』というのはご存じですが? whileループに入るまでに値が正常なのはr、v、hだけです。 cは不明な値に0.01を掛けているので、結果はやっぱり不定な値と同様です。 最近のコンパイラなら「未初期化の変数を参照している」という類の「警告」が出るかと思いますが……。 で、それらが終わった後で >printf ("input initial voltage [V] = "); >scanf ("%lf", &e); 変数eに値を取り込んでも意味がありません。

noname#180992
質問者

補足

良かったら正しいプログラムを書いていただけませんか?

回答No.1

nが初期化されてないので、値は不定。 while(n<2000) の時点でnが2000以上の不定な値になってたなら、ループしない。 それと、ループの後で数値入力しても意味ない。 あと、計算結果を表示も何もしてないので、プログラム自体が無意味。

noname#180992
質問者

補足

良かったら正しいプログラムを書いていただけると助かります。

関連するQ&A