- 締切済み
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); }
- みんなの回答 (3)
- 専門家の回答
みんなの回答
- tsunji
- ベストアンサー率20% (196/958)
初期化されてい変数があるのに、その変数を計算式で使っちゃダメでしょ。 とにかく全部の変数について初期化値を設定する。
- Wr5
- ベストアンサー率53% (2173/4061)
どういうエラーが出るんでしょうか? >long n; >while(n<2000) nの値はwhile文にきた時の値っていくつでしょうか? 『値を設定していないローカル変数は不定値がとなっている』というのはご存じですが? whileループに入るまでに値が正常なのはr、v、hだけです。 cは不明な値に0.01を掛けているので、結果はやっぱり不定な値と同様です。 最近のコンパイラなら「未初期化の変数を参照している」という類の「警告」が出るかと思いますが……。 で、それらが終わった後で >printf ("input initial voltage [V] = "); >scanf ("%lf", &e); 変数eに値を取り込んでも意味がありません。
- chie65536(@chie65535)
- ベストアンサー率44% (8740/19838)
nが初期化されてないので、値は不定。 while(n<2000) の時点でnが2000以上の不定な値になってたなら、ループしない。 それと、ループの後で数値入力しても意味ない。 あと、計算結果を表示も何もしてないので、プログラム自体が無意味。
補足
良かったら正しいプログラムを書いていただけると助かります。
補足
良かったら正しいプログラムを書いていただけませんか?