과제인데, 이런 간단한 프로그래밍이 왜... -_-
책에 나와있는 반분 코드를 고대로 썼는데 뭔가 잘못된 모양이다.
모든 루트값이 0와 10을 넣었을때 5가 되어버림. ㄷㄷㄷ
//---------------------------------------------------------------------------
//------------ 1에서 50까지의 제곱근을 반분법으로 구합니다. ----------------
//---------------------------------------------------------------------------
#include <stdio.h>
#include <math.h>
#define f(x) (x)*(x);
main()
{
int n = 50; //반분할 때 루프를 도는 max값.
int i;
float x1, x2, x3, f1, f2, f3;
printf("두 시점을 작은 수 부터 입력해 주세요 : ");
scanf("%f %f", &x1, &x2);
for (i=0; i<50; i++)
{
f1 = f(x1)-i-1;
f2 = f(x2)-i-1;
do {
x3 = (x1+x2)/2;
f3 = f(x3);
if (f1*f3 < 0) { x2 = x3; f2 = f3; }
if (f1*f3 > 0) { x1 = x3; f1 = f3; }
n--;
} while(n >=0 ) ;
printf(" *** %d의 제곱근은 %f 입니다. *** \n", i+1, x3);
}
}
쫌 더 쳐다보고 있어야 하는듯.
'춤추는 프로그래머 > C, C++' 카테고리의 다른 글
window mobile SDK 6.0 (0) | 2010.03.06 |
---|---|
mspdb80.dll이 없다고? (0) | 2010.02.28 |
C/C++ 문자열 처리 함수 (0) | 2010.02.24 |
기사 하나. (2) | 2009.10.29 |
QoS (Quality of Service) (0) | 2009.06.12 |