• ベストアンサー

うまく出力されない

#include <stdio.h> #include <math.h> int main(void) { int j=0; double t,i[500]; for(t=0;t<=20*pow(10,-3);t=t+(0.04*pow(10,-3)) ){ i[j]=(3.9*pow(10,-12)*5*pow(10,3)*(sin(314*(t+(0.04*pow(10,-3))))-sin(314*t)))/(0.04*pow(10,-3)); printf("%3d %1.10f\n",j,i[j]); j++; } } これを出力させたところ、202番以降からしか表示されませんでした。 これはなぜなのでしょうか? 分かる方がいたら、ぜひ、解決法を教えてもらえませんか? 宜しくお願いします。

質問者が選んだベストアンサー

  • ベストアンサー
回答No.4

>存在しません。配列iのとりうる添字の範囲は0~499なので、 定義範囲を超えています。 良かった。俺の理解はあってたんだね。 これを読んでいたおかげだ。 http://www.yoshibaworks.com/ayacy/inasoft/talk/t200702.html#060001 >今回、jは514までとりうるので、iには515個以上の領域を定義しておけばOKです。 多分質問者様の意図としてはj=514になっても走らせたかったんじゃなくて20/0.04 = 500でちょうどj= 500でぴったり停止させるつもりだったんだと思う (だから宣言をi[501]とかに変えた後は共にj=500で停止する。もしかしてi[500]への代入がtを書き換えていたりするんだろうか?たまたまメモリ上に20^10^(-3)より大きい値があった位置で止まったのかなと。) >端末のバッファ行数 実は俺はコマンドプロンプトの表示行を増やす方法を知らないので、ファイル書き出しで見てみることにしたんだけどね (コマンドプロンプト上では当方では211行目以降からしか表示されなかったので C:\>hoge.exe>fuga.txt とかやってfuga.txtに書き出して出力結果を確認した。 #だからコマンドプロンプトの話は514行とせず,j=514で停止した、と書いた。 >>iには515個以上の領域を定義しておけばOKです。ありますが、 >変数宣言をi[1000]としたら

blackdog10
質問者

お礼

何から何まで教えていただき、ありがとうございました。 これで、問題を解決することができました。 明日までの課題だったので、非常に助かりました。 教えてくださったみなさんありがとうございました。

その他の回答 (4)

回答No.5

>たまたまメモリ上に20^10^(-3)より大きい値があった位置で止まったのかなと。 わけわからんこと言ってた。撤回。何故この位置で停止するのかは俺は理解していない。

  • asuncion
  • ベストアンサー率33% (2127/6289)
回答No.3

> 利用しようとするi[500]は存在するの? 存在しません。配列iのとりうる添字の範囲は0~499なので、 定義範囲を超えています。 今回、jは514までとりうるので、iには515個以上の領域を定義しておけばOKです。

blackdog10
質問者

お礼

回答ありがとうございます。 iには515個以上の領域を定義しておけばOKです。ありますが、 どのように設定すれば良いのでしょうか? 教えてもらえると助かります。宜しくお願いします。

回答No.2

うん,そう思って,やってみたら テキストファイルの方は490行で止まり、コマンドプロンプトの方はjが514とか出てきたんで,tを見つつ考えていたんだけど>#1さん 僕はVB.NET系の人間なので自信がないのだけれど,利用しようとするi[500]は存在するの?(i[0]~i[499]までかな?何故tが途中で0.00006みたいな数字に戻るみたいだけど・・・・) 試しに、変数宣言をi[1000]としたらどちらも500行で止まったんだ。 詳しく解説できる回答者を募集したいと思う。

blackdog10
質問者

お礼

回答ありがとうございます。 自分は、C言語はほとんど初心者なので色々わからないところがあり、 参考になりました。

  • gatyan
  • ベストアンサー率41% (160/385)
回答No.1

出力をファイルにリダイレクトして確認する less とか more とかで出力を1画面分づつ表示させてみる 端末のバッファ行数を今より200+α行多く設定してから実行する

blackdog10
質問者

お礼

回答ありがとうございます。 あまりC言語が詳しくなくて、悪いのですが、less,moreはwindowsでも使えるのでしょうか? あと、端末のバッファ行数を設定するにはどうすれば良いのでしょうか? できれば、教えてもらえると助かります。

関連するQ&A