Hỏi bài tập vòng lặp tính tổng dựa vào điều kiện n

Nhập c, tính số I = (-1)^n * 1/(2n+1) với 1/(2n+1) <= c.

#include<stdio.h>

int main(){
	int n = 0;
	double c, res = 0;
	int s = 1;
	
	scanf("%lf", &c);
	
	while(1){
		res+= s*1.0/(n*2 + 1);
		s*= -1;
		++n;
		if(1.0/(2*n+1) <= c) break;
	}
	res*= 4;
	
	printf("PI = %lf", res);
	return 0;
}

cho em hỏi nếu chỗ while(1) em thay bằng while(1.0/(2*n+1) <= c) thì sai ở đâu ạ ?

Sai ở chỗ nó NGƯỢC nhau.
Đáng lẽ là: while(1.0/(2*n+1) > c)
Vì sao?

Lặp cho đến khi (until) nhỏ hơn - bằng c, tức là trong khi (while) còn lớn hơn c.

Điều kiện if - break chính là until.

1 Like
83% thành viên diễn đàn không hỏi bài tập, còn bạn thì sao?