Trang 1 của 6 123 ... CuốiCuối
Kết quả 1 đến 10 của 59
  1. #1
    Ngày tham gia
    Aug 2015
    Bài viết
    2

    Giúp mình bài pascal này !

    Căn bậc bai: (CBH)
    - Viết chương trình pascal tính:
    P=CBH(1+CBH(2+...+CBH(N))) với n<=1000. Phần thập phần lấy 4 chữ số thập phân.
    ->> XIn lỗi, mình không thể gõ kí hiệu căn bậc hai lên diễn đàn.

  2. #2
    Ngày tham gia
    Nov 2015
    Bài viết
    0
    Vấn đề của bài này là viết được chương trình con tính căn bậc 2 của 1 số.
    Đây là Function CBH theo ý của bạn thích. [IMG]data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAAAEAAAABAQMAAAA l21bKAAAAA1BMVEXh5PJm+yKVAAAAAXRSTlMAQObYZgAAAApJR EFUCNdjYAAAAAIAAeIhvDMAAAAASUVORK5CYII=[/IMG]
    Mã:
    Function CBH(a : Integer) : Real;
    Begin
           CBH := exp((1/2)*ln(a));
    End;

  3. #3
    Ngày tham gia
    Aug 2015
    Bài viết
    4
    SQRT là hàm căn bậc hai mà. Dùng hàm đó có phải tiện hơn không HSG?

  4. #4
    Ngày tham gia
    Nov 2015
    Bài viết
    0
    Đây là chương trình bạn ah. Vì ta cần cộng các số trong căn từ 1 đến N mà số căn của N là ít nhất, sau đó đến N-1,...,số1 là nhiều căn nhất Bạn phải dùng vòng lặp For- downto để tính theo lệnh lặp và công thức lặp S:=sqrt(i+S) như sau:

    Mã:
    program vd;
    Var i,N:integer;S:Real;
    Begin
    write('Nhap vao so N:'); Readln(N);
    S:=0;
    For i:=N downto 1 do
    S:=sqrt(i+S);
    write('S=',S:7:4);
    Readln
    End.
    nhớ nhấn cám ơn nhé!

  5. #5
    Ngày tham gia
    Aug 2015
    Bài viết
    9
    lê hằng ơi, cái này phải là for... to chứ.

  6. #6
    Ngày tham gia
    Aug 2015
    Bài viết
    6
    Phải dùng For - dơnto thì mới cộng ra kết quả như bài toán bạn ah. Bạn xem lại xem.

  7. #7
    Ngày tham gia
    Apr 2016
    Bài viết
    19
    không đúng, bài đó như thế này chứ:
    Mã:
    var N,S,i:integer;
    begin
    write('so phan tu cua day:');
    readln(N);
    S:=0;
    for i:=1 to N do
    
    S:=sqrt(S+sqrt(i));
    write('tong la:'S:8:4);
    readln
    end.
    Nhưng mà sao khi chạy chương trình nó lại báo lỗi 26 ở
    Mã:
    S:=sqrt(S+(i));
    nhĩ?

  8. #8
    Ngày tham gia
    Aug 2015
    Bài viết
    1
    Trích dẫn Gửi bởi gianghen
    không đúng, bài đó như thế này chứ:
    Mã:
    var N,S,i:integer;
    begin
    write('so phan tu cua day:');
    readln(N);
    S:=0;
    for i:=1 to N do
    while i<=1000 do
    S:=sqrt(S+sqrt(i));
    write('tong la:'S:8:4);
    readln
    end.
    Nhưng mà sao khi chạy chương trình nó lại báo lỗi 26 ở
    Mã:
    S:=sqrt(S+(i));
    nhĩ?
    s : real ; mới đúng chứ . vì hàm sqrt trả ra kết quả là 1 số thực .

  9. #9
    Ngày tham gia
    Nov 2015
    Bài viết
    7
    Trích dẫn Gửi bởi lehang_gb1
    Đây là chương trình bạn ah. Vì ta cần cộng các số trong căn từ 1 đến N mà số căn của N là ít nhất, sau đó đến N-1,...,số1 là nhiều căn nhất Bạn phải dùng vòng lặp For- downto để tính theo lệnh lặp và công thức lặp S:=sqrt(i+S) như sau:

    Mã:
    program vd;
    Var i,N:integer;S:Real;
    Begin
    write('Nhap vao so N:'); Readln(N);
    S:=0;
    For i:=N downto 1 do
    S:=sqrt(i+S);
    write('S=',S:7:4);
    Readln
    End.
    nhớ nhấn cám ơn nhé!
    uh mình cũng nghĩ là dùng for ... downto sẽ đúng hơn , vì đề nói là N <= 1000 , như vậy ta nhập N vào rồi cho nó chạy về 1 và đưa ra kết quả thì hay hơn . Mà sao cũng đc , quan trọng là chủ topic hiểu là đc rồi .

  10. #10
    Ngày tham gia
    Aug 2015
    Bài viết
    2
    nhưng mà bạn ơi, căn(1+căn(2+căn... chứ ko phải là căn(1+2+3+...) mà dùng downto
    bài khi nảy của tớ bỏ cái
    Mã:
     while..do..
    là ok

Trang 1 của 6 123 ... 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
  •