ページ 11

ニュートン法で平方根の近似値を求める問題です

Posted: 2014年1月27日(月) 11:13
by tmmm
C言語初心者です。
ニュートン法で平方根の近似プログラムを組んでいるのですが,
sqrt(a)=0.000000 と出てきてしまいます。

正しく表示させるにはどこをなおせばいいのでしょうか。
教えてください。



コード:

#include <stdio.h>

int main(void){


	double a, x, b, c;

	printf("Enter a:");
	scanf_s("%lf", &a);
	x = 1;

	for (;;){
		c = x*x;

		printf("x=%lf", x);
		printf("x*x=%lf\n", c);

		x = x - (x*x - a) / (2 * x);
		b = x*x - a;
		
		if ((b <= 0.00000001) && (b >= -0.00000001)){ break; }
	}

	printf("sqrt(a)=%lf\n", &x);

	return 0;
}

Re: ニュートン法で平方根の近似値を求める問題です

Posted: 2014年1月27日(月) 12:03
by usao
>printf("sqrt(a)=%lf\n", &x);

&いらないような

Re: ニュートン法で平方根の近似値を求める問題です

Posted: 2014年1月27日(月) 15:45
by tmmm
>>usaoさん

そうでした、printf関数なのでいらないですね、無知をさらしてしまいお恥ずかしい限りです。
指摘いただきありがとうございます!

Re: ニュートン法で平方根の近似値を求める問題です

Posted: 2014年1月27日(月) 16:46
by usao
問題が解決したならば 解決チェックを付けてくださいね.

どのような状態まで作ったらゴールという話かにもよりますが,

・aに負の値が入力された場合はどうする?
・for(;;)みたいな,万が一の場合に無限ループになる恐れがある記述は避けた方がいいかも

というのがちょっと気になる点かも.