//円錐の体積をもとめるプログラム
#define _USE_MATH_DEFINES
#include <stdio.h>
#include <math.h>
int main(void)
{
int r;//半径
int h;//高さ
double n;//分割
double v, V = 0;//体積
printf("円錐の体積を計算します。\n");
printf("数字を入力してください。\n");
printf("半径=");
scanf_s("%d", &r);
printf("高さ=");
scanf_s("%d", &h);
n = h / 100;
double X = (n - 1)*r / n;//1分割の円柱の半径
while (n < h) {
v = (M_PI)*pow(X,2,0)*(h / n);
n++;
V += v;
}
printf("体積は%.2lfです。",V);
return 0;
}
これで計算するとinfになる理由がわかりません。なぜ無限大になってしまうのでしょうか。
どこが違うのか教えてください。
Re: どこが違うのか教えてください。
根本的な原因は、
n = h / 100;
の結果が0.000....になっていることだと思われます。
この部分を
n = h / 100.0;
または、
n = (double)h / 100;
のようにdouble型にするとinfにならなくなります。
参考
http://koexuka.blogspot.jp/2013/04/c.html
n = h / 100;
の結果が0.000....になっていることだと思われます。
この部分を
n = h / 100.0;
または、
n = (double)h / 100;
のようにdouble型にするとinfにならなくなります。
参考
http://koexuka.blogspot.jp/2013/04/c.html
Re: どこが違うのか教えてください。
本当に申し訳ございません。
自分が記載したトピックには、何も書かれていないものだけだったのですが、
なぜか送信後、回答が記載されたトピックが現れました。
送信時にブラウザが少し固まってしまったのですが、それが原因なんでしょうか。
意図しないこととはいえ、そのまま放置してしまい。本当に申し訳ございません。
自分が記載したトピックには、何も書かれていないものだけだったのですが、
なぜか送信後、回答が記載されたトピックが現れました。
送信時にブラウザが少し固まってしまったのですが、それが原因なんでしょうか。
意図しないこととはいえ、そのまま放置してしまい。本当に申し訳ございません。
Re: どこが違うのか教えてください。
くだんのコメントは、元の質問者にあてたものです。NakaTaka さんが書きました:本当に申し訳ございません。
あなたあてではありません。
まあザックリいうと、Aさんという質問者に対して
「あなたさあ、つい先だって、同じような内容の質問をしたばっかでしょ。
それが解決したのかどうかマークを付けてないのに、似た質問してんじゃねーよ。
前の、似た質問への回答、ちゃんと読んでる?」ってこと。
これを「質問者による元トピ放置」といい、この場所においては
あまりよろしくないふるまいであるとされているようです。
バグのないプログラムはない。
プログラムは思ったとおりには動かない。書いたとおりに動く。
プログラムは思ったとおりには動かない。書いたとおりに動く。
Re: どこが違うのか教えてください。
自分が送信した際に、誤って出来たものでは無かったのですね。
ありがとうございます。
掲示板の利用経験が少ないので、とても勉強になりました。box さんが書きました: まあザックリいうと、Aさんという質問者に対して
「あなたさあ、つい先だって、同じような内容の質問をしたばっかでしょ。
それが解決したのかどうかマークを付けてないのに、似た質問してんじゃねーよ。」ってこと。
これを「質問者による元トピ放置」といいます。
ありがとうございます。