Trang ChínhTrang Chính  CalendarCalendar  Trợ giúpTrợ giúp  Tìm kiếmTìm kiếm  Thành viênThành viên  NhómNhóm  Đăng kýĐăng ký  Đăng NhậpĐăng Nhập  

Share | 
 

 Horner-(Câu lệnh lặp FOR-WHILE)

Xem chủ đề cũ hơn Xem chủ đề mới hơn Go down 
Tác giảThông điệp
Tboy
Cá voi
Cá voi
avatar


Nam Tổng số bài gửi : 178
Cảm ơn : 413
Danh vọng : 4
Join date : 03/01/2011
Age : 26
Đến từ : TPHCM

Bài gửiTiê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

Về Đầu Trang Go down
Xem lý lịch thành viên http://taplaptrinh.forumvi.com
 

Horner-(Câu lệnh lặp FOR-WHILE)

Xem chủ đề cũ hơn Xem chủ đề mới hơn Về Đầu Trang 
Trang 1 trong tổng số 1 trang

Permissions in this forum:Bạn không có quyền trả lời bài viết
 :: Cơ sở lập trình 1 :: Bài tập thực hành-