Thứ Sáu, 16 tháng 11, 2012

GIẢI TOÁN VỚI NGÔN NGỮ C/C++ (bài 2_ đề án )




  • Bài toán đặt ra:


Xem công thức tính sau đây (đề thi tuyển sinh cao học ngành KHMT, năm 2011):

Trong đó Max, Min lần lượt là giá trị lớn nhất, nhỏ nhất của n số thực (được nhập vào từ thiết bị nhập chuẩn) a0, a1, …, an-1.

Chỉ dùng duy nhất 1 vòng lặp (for hoặc while), đề xuất cách thức để nhập n số thực như trên và tính giá trị của biểu thức Aver, xuất kết quả tính ra thiết bị xuất chuẩn. Viết chương trình để minh họa đề xuất đó.

Lưu ý: chỉ dùng các phép toán gán, vòng lặp, if ... đặc biệt không dùng mảng:



  • Việc cần giải quyết:

Khi tính tổng (ai –max)2    và   (ai –max)2 hai giá trị max, min ta chưa có và cũng không thể bắt người dùng nhập vào 2 lần dãy ai nên việc đặt ra là phải làm sao vòng lặp đưa ra chỉ thực hiện 2 việc sau:
- Tìm max, min.
- Tính cụm S nào đó không liên hệ với max,min
như vậy có thể thấy
(ai –max)2 = ai2 -2*ai*max + max2
(ai –min)2 = ai2 -2*ai*min + min2
+ = 2*ai2 -2*ai*(max+min) + (max2+min2)
Như vậy bạn đã đưa được về 2 giá trị cần tính (biến thiên) tách biệt khỏi max, min và đưa max, min (hằng số) tồn tại độc lập
è Chỉ cần tính   a22=2*ai2   &  a2=2*ai
  • Bài giải tham khảo: 

Không có nhận xét nào:

Đăng nhận xét