Trang 1 của 2 12 CuốiCuối
Kết quả 1 đến 10 của 17
  1. #1
    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?

  2. #2
    Ngày tham gia
    Apr 2016
    Bài viết
    517
    Trích dẫn Gửi bởi nmtuan987311
    Đâ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?
    Của bạn đúng, của sgk cũng đúng.
    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.

  3. #3
    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"

  4. #4
    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.

  5. #5
    Ngày tham gia
    Aug 2015
    Bài viết
    11
    Xin admin và các bác đồng chí cho ý kiến đi

  6. #6
    Ngày tham gia
    Aug 2015
    Bài viết
    3
    Trích dẫn Gửi bởi Ginta_ITFam
    Của bạn đúng, của sgk cũng đúng.
    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.
    Ginta ơi, thật ra nhìn kỹ 2 thuật toán đó khác nhau:
    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>;
    Khi đấy N không biểu diễn đúng số lượng phần tử, sẽ bị dư ra 1 đơn vị.
    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ố đó.

  7. #7
    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?

  8. #8
    Ngày tham gia
    Aug 2015
    Bài viết
    7
    Trích dẫn Gửi bởi nmtuan987311
    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?
    À, mình nhầm lẫn.
    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

  9. #9
    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!

  10. #10
    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

Trang 1 của 2 12 CuốiCuối

Quyền viết bài

  • Bạn Không thể gửi Chủ đề mới
  • Bạn Không thể Gửi trả lời
  • Bạn Không thể Gửi file đính kèm
  • Bạn Không thể Sửa bài viết của mình
  •