Dùng vòng lặp, thêm 1 vài biến phụ xử lý sao cho khéo số mũ và giai thừa là xong. Cứ code thử đi rùi post lên đây mình sẽ coi cho.
các bác cho em hỏi thuật toán tính bài đó với
tính sin(x)=x-x^3/3!+x^5/5!-x^7/7!...
Luôn luôn lắng nghe, luôn luôn thấu hiểu
Dùng vòng lặp, thêm 1 vài biến phụ xử lý sao cho khéo số mũ và giai thừa là xong. Cứ code thử đi rùi post lên đây mình sẽ coi cho.
Gợi ý một chút nhé.
Chỉ là thêm một tí thôi cho nó tối ưu về tốc độ.
Bạn nên có một biến Tmp;
Tại thời điểm index thì tmp=giai_thua (index);
Tại thời điểm index+2 thì tmp=tmp*(index-1)*(index);
Như vậy bạn không phải mỗi bước index lại đi tính giai_thua (index);
Nói chung bài này chi là một bài đơn gian để bạn làm quen với các bài sử lý nhiều sự kiện sau này. Bạn cố gắng code rồi post lên mọi người check cho.
Sau khi làm xong, bạn có thể làm thêm bài này;
Tính biểu thức sqrt(6+sqrt(6+sqrt(6+...))).
Thân.
Trao đổi kiến thức sẽ giúp ta tiếp cận nhanh với kiến thức.
Bài này trong giáo trình Ngôn ngữ C của Vũ Bá Duy giải theo cách nhập thêm 1 sai số eps (epsilon).
Code:#include <math.h> #include <stdio.h> void main(){ float x, eps; float s, sh; int k; printf("\nNhap gia tri (radian) x = "); scanf("%f",&x); printf("\nNhap sai so duoc phep eps = "); scanf("%f",&eps); s=x;sh=x; k=1; do { sh =-sh*x*x/(2*k*(2*k+1)); s+=sh; k++; } while(fabs(sh)>eps); printf("s= %f ",s); }
Viết trên C++
Tui chẳng hiểu code của ông Vũ Bá Duy gì đó thêm thư viện math mà chẳng xài tới thư viện đó, ko hiểu ổng thêm làm gìCode:#include <iostream> #include <iomanip> using namespace std; int main() { cout <<"Nhap x: "; double x; cin >>x; cout <<"Nhap n: "; int n; cin >>n; double tmp = x; double sinx = x; for (int i = 3; i <= n; i = i + 2) { tmp *= -(x * x / i / (i-1)); sinx += tmp; } cout <<"sin (" <<x <<") = " <<setw(15) <<sinx <<endl; system("pause"); return 0; }
cái này : fabs()
fabs() lấy giá trị tuyệt đối của kiểu float.Ok men
Yêu lắm Cesc![]()
![]()
![]()
![]()
Mình chỉ thêm một chút thôi
sin(x)=x^1/1!-x^3/3!+x^5/5!-x^7/7!...
Mình từ Caulacbovb qua)
Giã từ VB6 đến với VB.Net, C# và Java.![]()