Tboy Cá voi
Tổng số bài gửi : 178 Cảm ơn : 413 Danh vọng : 4 Join date : 03/01/2011 Age : 32 Đến từ : TPHCM
| Tiêu đề: Horner-(Câu lệnh lặp FOR-WHILE) Tue Jan 04, 2011 10:45 am | |
| | Tue Jan 04, 2011 10:45 am Horner-(Câu lệnh lặp FOR-WHILE) | | | Đề bài:Cho số thực x và số nguyên dương n.Hãy tính biểu thức sau bằng phương pháp Horner
f=(n+1).x^n+n.x^(n-1)+...+2x+1 yêu cầu: sử dụng câu lệnh if, for. - Code:
-
//Horner f=(n+1).x^n+n.x^(n-1)+...+2x+1 #include <stdio.h> void main() { int n,b; double f,a; printf("Nhap vao so n va a: "); scanf("%d%lf",&n,&a); b=n+1; f=float(b); if (b>1) for (int i=1;i<=n;i++) f=a*f+(--b); printf("Gia tri bieu thuc la: %lf\n",f); } Hướng giải: Vẽ sơ đồ Horner ra đặt tương ứng a,b,f (f là giá trị biểu thức), ta thấy f chỉ được tính và lặp lại sau đó khi thực hiện lần nhân ngang cộng chéo đầu tiên nên sẽ bỏ qua b ở b=(n+1), từ đó ta có biểu thức chính trong vòng lặp là f=a*f+(--b); (b giảm 1 trước khi thực hiện phép tính) Code update: - Code:
-
//Horner #include <stdio.h> #include <conio.h> void main () { int n; double x,f; printf("Nhap so nguyen duong n: "); scanf("%d",&n); f=n+1; printf("Nhap so thuc x: "); scanf("%lf",&x); for(int i=1;i<=n;i++) f=n+1-i+x*f; printf("Ket qua = %lf\n",f); getch(); } Giải thích: biến b giảm 1 trước mỗi lần tính f, tương ứng b đầu tiên có giá trị (n+1) trừ cho i Tboy
| | | | | |
|