-
11-14-2010, 04:09 PM #1
Junior Member
- Ngày tham gia
- Aug 2015
- Bài viết
- 5
Giúp mình về bài Tin 11 Cấu trúc lặp, SGK sai chăng?
Đây là một bài ví dụ trong SGK Tin 11, các bạn xem dùm mình thuật toán phía dưới là đúng hay sai
- Bài toán 2: Tính tổng S= 1/a + 1/(a+1) + 1/(a+2) +...........+ 1/(a+n) +......... đến khi 1/(a+n) <0.0001 thì dừng lại với n= 1 2 3….
Thuật toán:
B1: S←1/a; N←0;
B2: Nếu 1/(a+n) <0,0001 thì chuyển đến B5
B3:N←N+1
B4: S←S+1/(a+N) rồi quay lại bước 2
B5: Đưa S ra màn hình rồi kết thúc
Còn thuật toán theo mình viết là:
B1: Nhập a
B2: S←1/a; N←1;
B3: Nếu 1/(a+n) <0,0001 thì chuyển đến B5
B4: S←S+1/(a+N)
B5: N←N+1 rồi quay lại bước 2
B6: Đưa S ra màn hình rồi kết thúc
Theo bạn thuật toán SGK đún hay của mình đúng?
-
11-14-2010, 11:47 PM #2
Silver member
- Ngày tham gia
- Apr 2016
- Bài viết
- 517
Gửi bởi nmtuan987311
Cả 2 thuật toán đều gán S=1/a trước, mình không nói tới nữa.
Của sgk, quá trình tăng N lên 1 đơn vị thực hiện trước việc tăng giá trị của S, do đó là đúng
Của bạn: bạn tăng s trước, tăng N sau, vẫn đúng bởi vì bạn đã gán cho n nhận giá trị = 1 ngoài vòng lặp, vì thế chỉ là bạn đi trước so với sgk, chứ không nói là ai sai được, cả 2 đều đúng.
Còn nếu chưa tin, viết chương trình làm theo 2 thuật toán bạn sẽ kiểm nghiệm được lời mình nói.
-
11-15-2010, 06:07 AM #3
Junior Member
- Ngày tham gia
- Aug 2015
- Bài viết
- 3
Sách giáo khoa có nhiều chỗ không rõ ràng lắm. Như sgk tin học 10, bài 2 trang 12 có ghi: "một byte biểu diễn được số nguyên trong phạm vi từ -127 đến 127"
-
11-16-2010, 02:54 AM #4
Junior Member
- Ngày tham gia
- Aug 2015
- Bài viết
- 0
Với a=10000 (mười ngàn)
Vậy theo bạn tính tay(không được nghía thuật toán nghe)kết quả sau cùng: S=1/1000 phải không?
Còn trên máy thì khác đấy: S=1/10000 + 1/(10000+1)
Bạn không thấy thuật toán SGK theo kiểu: đi hỏi em mà cưới chị à?
xét điều kiện một đường: 1/(a+n) <0,0001 ứng với n=0
lại đi cộng một nẻo: S=1/a + 1/(a+n) ứng với n=1
Hy vọng được các bạn xem xét kĩ dùm mình vì mình sắp đến thời gian khảo sát rồi. Bị dính bài này mình đuối luôn.
-
11-16-2010, 04:45 AM #5
Junior Member
- Ngày tham gia
- Aug 2015
- Bài viết
- 11
Xin admin và các bác đồng chí cho ý kiến đi
-
11-16-2010, 05:42 AM #6
Junior Member
- Ngày tham gia
- Aug 2015
- Bài viết
- 3
Gửi bởi Ginta_ITFam
Chương trình của SGK sẽ không + cho số 1/(a+n), chương trình của bạn chủ topic sẽ + cho 1/(a+n).
SGK không sai đâu bạn, đề yêu cầu cộng lại cho đến khi N đạt yêu cầu 1/(a+n) thì dừng, tức không cộng số đó vào. Thuật toán của bạn giống như trường hợp sau đây:
Mã:N la so luong phan tu trong mang A
Mã:n:=1; repeat a[n]:=<const> inc(n); until <hết dãy>;
P/s: nếu đề SGK cho thêm một vài chữ cho rõ ràng tí thì bạn sẽ dễ thấy sai khác giữa 2 thuật toán: tính tổng S, khi xét đến số N mà 1/(a+n) thì không cộng vào nữa - không cộng số đó.
-
11-16-2010, 08:38 PM #7
Silver member
- Ngày tham gia
- Apr 2016
- Bài viết
- 6
Cám ơn bạn binhnguyenLQD-kg
Nhưng bạn có nhầm không?
Với a=10000
Thì thuật toán của mình (thuật toán viết ở dưới) là sẽ thoát lại ở B3 vì kiểm tra thấy 1/(10000+1)<0.0001 là đúng nên đi đến B5 rồi kết thúc
→ cho nên sau cùng S=1/10000
Còn thuật toán SGK thì lại đi xét điều kiện 1/(10000+0)<0.0001 còn sai nên phải làm B3 B4 rồi quay lại B2 xét điều kiện thấy 1/(10000+1)<0.0001 là đúng mới dừng lại
→ cho nên sau cùng S=1/10000 + 1/(10000+1)
Vậy rõ ràng là SGK đã cộng vào S một phân số 1/(10000+1) rồi quay lại xét điều kiện sau đúng không?
-
11-18-2010, 07:18 PM #8
Junior Member
- Ngày tham gia
- Aug 2015
- Bài viết
- 7
Gửi bởi nmtuan987311
Nếu đề hiểu theo như mình thì SGK sẽ sai, phải chăng đề SGK nên là:
S=1/(a+1)+1/(a+2)+...+1/(a+n). Với n thỏa mãn điều kiện: 1/(a+n)<0.0001
-
11-18-2010, 11:14 PM #9
Junior Member
- Ngày tham gia
- Aug 2015
- Bài viết
- 2
Bạn nmTuan ah, SGK không sai được, SGK hoàn toàn chính xác đấy
Phần đầu bài SGK có cho N =1,2,3 ... đâu
Bạn nói SGK khoa cho N=1,2,3 đấy là phần cách tính tổng S thôi, bạn hãy đọc kĩ lại đi.
Tất cả các số hạng của dãy đều có công thức tổng quát 1/(a+N) khi đó thì N =0,1,2...
Như vậy cách của bạn chưa đúng vì bạn bỏ qua trường hợp đầu khi nhập vào N=0, và 1/a thỏa mãn ngay điều kiện dừng của bài toán.
Bạn suy nghĩ lại cho kĩ nhé!Chúc bạn học tốt!
-
11-20-2010, 05:47 PM #10
Junior Member
- Ngày tham gia
- Nov 2015
- Bài viết
- 0
"Như vậy cách của bạn chưa đúng vì bạn bỏ qua trường hợp đầu khi nhập vào N=0, và 1/a thỏa mãn ngay điều kiện dừng của bài toán."
Mình bỏ qua N=0 là vì SGK cũng cho rằng đầu tiên gán 1/a cho S tức là tặng không cho S rồi còn xét làm gì. Dù a là bao nhiêu đi nũa thì S đầu tiên cũng bằng 1/a cái đã.
Vậy thì mình xét cho n=1 thôi chứ n=0 làm gì nữa.
Khi n=1 thì mình mới xét điều kiện ứng với n=1 rồi mình mới quyết định thêm phân số đó vào S hay không!
Vậy mình sai ở đâu, không hợp logic chỗ nào xin mọi người chỉ dùm
Xe nâng người Boom lift được Công Ty TNHH Trung thành phân phối chính hãng tại khu vực phía Bắc. Với chi phí đầu tư ban đầu thấp hơn rất nhiều so với các loại xe nâng dầu , xe nâng động cơ loại...
Xe nâng người được trung thành nhập khẩu giá tốt