• ベストアンサー

C言語プログラム

学校のレポートでC言語のプログラムを作りました。ところが実行してみると計算値を表示させるところに -1.#IND00 と表示されます。本当は実数が表示されるはずなに・・・ 多分、私のプログラムが間違っているのだろうと思います。どこが間違っているのか目星をつけるためにこの出力結果の意味を教えてほしいのです。

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

  • ベストアンサー
  • fuji1
  • ベストアンサー率29% (109/371)
回答No.2

こんにちは。 このエラーは、数値的なミスがあるときに表示されます。 fmod の説明には -10.00/3.00 の剰余は -1.#IND00 3.00/0.00 の剰余は -1.#IND00 と出ています。 上は、負数の剰余は数学的にありえないため、 下は、数学的にゆるされていないため、 エラーになっています。 marradona さんの計算値がどのようなものかわかりませんが、 直前で数値を printf で表示して数学的エラーがないか、確認してみてはどうですか? 以外と0割りのエラーは多いですよ。(代入ミスとかで)

marradona
質問者

お礼

おっしゃる通りprintfで計算値を調べてみて原因を特定できました。どうやら for文の中のdouble pow(double x, double y)への引数としてxが0、yが負の数となる場合があってそれが数値エラーとなったようです。 ありがとうございました。

その他の回答 (1)

  • miya_777
  • ベストアンサー率31% (44/140)
回答No.1

恐らくは、文字列として表示しているのではないでしょうか? flot aaa; printf("%s",aaa); とかしていませんか? 具体的にプログラムを教えて頂けなければ、これ以上はわかりません。

marradona
質問者

お礼

うーん。プログラムを見直しましたが、そういう間違いではないようです。

関連するQ&A

  • C言語 2次方程式を解くプログラムについて

     学校でC言語を使って、実数解をもつ簡単な2次方程式を解くプログラムを作れという課題がでました。まだ初心者で何をどうしたらいいかわからない状態です。簡単なプログラムを作ってくださいm(__)m

  • 至急で、C言語の問題で解答解説お願いします。

    1実数を3つ(a,b,c)を読み込み3辺とする三角形ができるか判定(d(d-a)(d-b)(d-c)>0のとき三角形となる)しできなければ、三角形ではありません!というメッセージを表示し、できる場合は以下のヘロンの公式を用いて三角形の面積を求めるプログラムをC言語で答えてください。d=(a+b+c)/2 s=√{d(d-a)(d-b)(d-c) 2maxの整数値(≧1)をキーボードから入力し、その値に対応した図形を出力するプログラムをC言語で答えてください。 例 max1 max2 max3 * ** *** * ** *** * ** *** ** *** *** 3整数nをキーボード入力しnの値に応じて以下の図形を表示するプログラムをc言語で答えてください。 n=3 n=4 n=5 3 4 5 45 56 67 678 789 890 0123 1234 56789 4整数n(≧0)を入力し歯科の計算を実行するC言語プログラムを答えてください。2つの自然数nとmを読み込みn個の中からm個を取り出すときの組み合わせの数を計算せよ。ただし、n!を計算する関数long fact (int n)を定義し必ずそれを用いること。 5 1つのscanfで2つの10進数を入力し8進数と16進数で表示するプログラムをC言語で答えてください。 6 実数aを入力し少数第1位で四捨五入する関数g(a)をマクロ定義で入力した値の少数第1位を四捨五入して出力するプログラムをC言語で答えてください。 7 4つの実数w,x,y,zを読み込みその最大値を出力するプログラムをC言語で答えてください。ただし、2つの実数の大きいほうを求める関数 double my may (double x,double y)を定義し、その関数を用い、if文を用いないでc言語で答えてください。

  • C言語で

    C言語で複素行列の和と積を計算するプログラムを作りたいのですが、 よくわからないので教えてほしいです。複素数を構造体で定義して、配列を使えば いいと思うのですが・・・。 ちなみに実数の行列の和と積を求めるプログラムはわかっています。

  • C言語のプログラムが実行できません。

    C言語のプログラムが実行できません。 コンパイルは出来るんですが、実行すると、「Segmentation fault」と表示されてしまいます。 これは何のエラーなんでしょうか? 基本的な事かもしれませんが、分かる方宜しくお願い致します。

  • C言語を始めよう!

    C言語を始めよう! http://www.forest.impress.co.jp/article/2002/10/24/cwohajimeyou.html を使用しています。 NT4/2000/XP で、16 ビットプログラムの実行結果が表示されない  と言う問題は、LSI C-86 Ver.3.30c 試食版をツールを利用して実行するプログラム共通の問題のようです。  CPad for LSI C-86でも、以下のとおり、同様の問題があり、 COMMAND  プログラムで、この問題を解決しようとしています。 phb1122  でも、以前は、 COMMAND を利用した形跡があります。今は、 PIF ファイルを作成 することで解決しています。  なぜ、このような経緯になったのか詳しく解説していただけませんでしょうか? ******************************* WindowsNT/2000上の CPad for LSI C-86 で、コンパイルはできるが、実行結果が表示されない これは LSI C-86 が16ビットアプリケーションであるために起こる現象です。 解決策は、作成した実行ファイルを実行する前に一度、Windows9xとの互換性のために用意されているcommand.comを実行することで回避できます。 CPad での設定方法は、 [設定]ダイアログ-[高度な設定]ページの[以下の設定を変更する(C)]にチェックをしてから、[実行するコマンド(B)]に %WINDIR%\system32\command.com /c exit > nul と記述して[OK]ボタンをクリックします。 これでNT/2000上でも LSI C-86で作成した実行ファイルの出力を確認できます。 また、この現象が起こらない場合もあるようですが、どういう環境で起こって、どういう環境で起こらないのかははっきりわかっていません。 *********************** C:\phb1122\phoebe.htm ★ NT4/2000/XP で、16 ビットプログラムの実行結果が表示されない場合について Windows NT4/2000/XP で、LSI C-86 試食版を使って 16 ビットプログラムを作成して実行した際に、出力結果が表示されず、空欄になってしまう場合があります。この現象についていろいろ調査してみましたが、NTVDM.EXE の動作に原因がありそうというだけで、それ以上がどうしても分かりません。しかし、強制的に MS-DOS プロンプトを起動させられればうまくいくのではと考え、PIF ファイルを作成し、それを介して実行することで、とりあえず出力結果を表示させることに成功しました。メニューの「ビルド(B)」→「PIF を作成して実行(I)」をチェックすることで設定できます。このメニューは、LSI C-86 試食版をコンパイラに設定しているときのみ有効です。 敬具

  • C言語で作ったEXEファイルの実行について

    最近、C言語で作ったEXEファイルをPC上で実行しました。 ファイルは実行できて、数値の入力、計算結果の表示はされるのですが すぐに閉じて(終了して)しまいます。 プログラムの流れは 1)メッセージの表示 2)カンマ区切りで数値の入力 3)計算結果の表示 の順番で実行されます。 しかし、3)が表示された後すぐファイルが閉じられてしまうため、 計算結果の確認ができません。 エディター(Bcpad)で実行すると計算結果が表示された後に何かキーを押すと正常に終了します。 どうすればいいでしょうか。

  • Cプログラム

    c言語で「正整数Nを入力後、N個の実数を入力し、それらの平均値と最大値を表示するプログラム」を教えてください。

  • C言語でのプログラムの作り方

    はじめまして。C言語初心者の中学一年生です。 C言語でプログラムを作ろうと思ったのですが、やり方がわかりません。 ”hello”と表示するプログラムの作り方を教えてください。 使用しているコンパイラは"Visual C++ 2010"です。パソコンはWindows xpです。 中学生でも分かるように教えてください。 エディエタ、やソースプログラムなどの用語についても教えてくださると嬉しいです。

  • 行列のC言語プログラム

    行列を使ったC言語のプログラムの作成をしようとしているのですが、 最初で躓いてしまっています。次に内容を出すので何がダメなのか教えて下さい。 行列A=0 0 0 0      1 -2 0 0      0 0 0 -0.0201      0 0 1 -2.01005 #include<stdio.h> #include<math.h> void main(void){ double a[4][4]={{0,0,0,0},{1,-2,0.0},{0,0,0,-0.0201},{0,0,1,-2.01005}}; double det=0.0; det=a[2][1]*a[2][2]*a[4][3]; printf("%f\n",det); scanf("%lf",&det); } 確認用の計算で、1*-2*1=-2という結果になると思ったのですが、 実行すると表示される値が「0」でした。 箇所の指定も行列の内容も多分間違ってないと思え、どこに問題があるのかわかりません。 後、デバックによる出力の際に画面が一瞬出てすぐに消えるんですがそれについても 分かるならお願いします。(とりあえず最後にscanfを入れて凌げるのでついででいいです。)

  • C言語プログラム

    C言語プログラム ある数を入力して、入力された数を一辺とする図形を描くプログラムを作りたいんです。 分かりやすくすると、 入力された数が5だった時、画面には ***** ***** ***** ***** ***** ↑こう出力させたいんです。 四角だけじゃなくて、 * ** *** **** ***** ↑こういう三角とか、逆三角とか、 *        * **     *** ***  ***** **     *** *        * こんなかんじでいろんな形を描けるようにしたいんです。 C言語で、for文の二重ループを使うようにとのことなんですが、 どうすればいいでしょうか。 こういうのってズルですけど、何かヒントでも貰えればと思っています...。