일단 과제를 해결하긴했어요
과제에서 오류를 수정해가던 도중 의문이들었는데요
#include <stdio.h>
int main(void)
{
int i, n;
double a, b, c, d, e, f, g;
i = 0;
g = 0;
e = 16;
n = 1;
while (n <= 100000)
{
while (i <= n)
{
e = e / 16.0;
a = 4.0 / (8.0 * i + 1.0);
b = 2.0 / (8.0 * i + 4.0);
c = 1.0 / (8.0 * i + 5.0);
d = 1.0 / (8.0 * i + 6.0);
f = e*(a - b - c - d);
g = g + f;
i++;
}
printf("n은%d,pi는%.15f\n", n, g);
n = n * 10;
}
return 0;
}
이경우엔 문제없이잘나옵니다
그런데
#include <stdio.h>
int main(void)
{
int i, n;
double a, b, c, d, e, f, g;
i = 0;
g = 0;
e = 16;
n = 1;
while (n <= 100000)
{
while (i <= n)
{
e = e / 16.0;
a = 4.0 / (8.0 * i + 1.0);
b = 2.0 / (8.0 * i + 4.0);
c = 1.0 / (8.0 * i + 5.0);
d = 1.0 / (8.0 * i + 6.0);
f = e*(a - b - c - d);
g = g + f;
i++;
printf("n은%d,pi는%.15f\n", n, g);
}
n = n * 10;
}
return 0;
}
이렇게되면 출력이 무한정으로 계속나오더라구요 무엇의 차이때문인지 궁금해요
출처 |
나의 대학교 과제해결과정도중 생긴의문
과제는 이미해결햇습니다 ㅎㅎ |