Follow us on...
Follow us on Facebook

VN-Zoom.com chung tay vì Cộng đồng

Kaka - ứng dụng hát Karaoke trên mobile

Tuyển Mod Mobile diễn dàn Vn-Zoom.com 2014

Chiêm ngưỡng BaoMoi đẹp "tuyệt diệu" trên Windows Phone

Vui thể thao quà ý nghĩa

VPS siêu rẻ cho VNZ 150k/tháng.Server 2 CPU, 16GB RAM,300GB SAS 3tr/tháng
kết quả từ 1 tới 11 trên 11
  1. #1
    god250895's Avatar
    god250895 vẫn chưa có mặt trong diễn đàn Rìu Bạc Đôi
    Tham gia
    Jul 2011
    Đến từ
    Thanhhoa City
    Bài
    550
    Cảm ơn
    374
    Điểm
    195/103 bài viết
    VR power
    0

    Default Kiểm tra số X có phải số đối xứng ko ? Mình làm thế này, ae vào thảo luận nhé ! (Pascal)

    Mình làm thế này nhưng chỉ nhập đc giá trị x đến 10 chữ số là nó chạy đúng, kể từ 11
    chữ số trở đi là false sạch Có phải quá giới hạn longint ko ?
    Bạn nào có cách khác hay và ngắn hơn thì share nhé !
    P/S: Đừng dùng string nhé !
    Code:
    function DoiXung(x: longint): boolean;
        var q,p,y: longint;{y la so nguoc cua x}
            i,d: integer; {d la dem so chu so}
        begin
            d:=0;
            q:=x; p:=x;
            while q <> 0 do
               begin
                  q:= q div 10;
                  d:= d+1;
               end;
            y:=0;
            for i:= d downto 1 do
               begin
                  y:= y + (p mod 10)*10**(i-1);
                  p:= p div 10;
               end;
            if y <> x then DoiXung:= false else DoiXung:=true;
        end;


    ---------- Bài thêm lúc 14:33 ---------- Bài trước là lúc 14:29 ----------

    À cho mình hỏi công dụng và cách dùng của từ khóa sau trong Pascal:
    case of
    exit
    trunc
    frac
    change

  2. #2
    chuduccuong3's Avatar
    chuduccuong3 vẫn chưa có mặt trong diễn đàn Rìu Sắt
    Tham gia
    Jun 2011
    Bài
    145
    Cảm ơn
    343
    Điểm
    66/14 bài viết
    VR power
    0

    Default

    hình như bài này có chỗ sai thì phải:
    function DoiXung(x: longint): boolean;
    var q,p,y: longint;{y la so nguoc cua x}
    i,d: integer; {d la dem so chu so}
    begin
    d:=0;
    q:=x; p:=x;
    while q <> 0 do
    begin
    q:= q div 10;
    d:= d+1;
    end;
    y:=0;
    for i:= d downto 1 do
    begin
    y:= y + (p mod 10)*10**(i-1);==> xem lại dòng này là bạn code lên vn-zoom sai hay là sai trong bài vậy?
    p:= p div 10;
    end;
    if y <> x then DoiXung:= false else DoiXung:=true;
    end;

    ---------- Bài thêm lúc 16:04 ---------- Bài trước là lúc 15:59 ----------

    hình như bài này có chỗ sai thì phải:
    function DoiXung(x: longint): boolean;
    var q,p,y: longint;{y la so nguoc cua x}
    i,d: integer; {d la dem so chu so}
    begin
    d:=0;
    q:=x; p:=x;
    while q <> 0 do
    begin
    q:= q div 10;
    d:= d+1;
    end;
    y:=0;
    for i:= d downto 1 do
    begin
    y:= y + (p mod 10)*10**(i-1);==> xem lại dòng này là bạn code lên vn-zoom sai hay là sai trong bài vậy? sao lại có "**(i-1)"?
    p:= p div 10;
    end;
    if y <> x then DoiXung:= false else DoiXung:=true;
    end;
    Một bước sang ngang một đời tàn

  3. #3
    Ngox_TM's Avatar
    Ngox_TM vẫn chưa có mặt trong diễn đàn Rìu Bạc Đôi
    Tham gia
    Jul 2011
    Bài
    627
    Cảm ơn
    198
    Điểm
    493/164 bài viết
    VR power
    0

    Default

    case of: Gần giống lệnh If .. then. Nhưng khác ở chỗ If..then chỉ có thể thực hiện một hoặc hai câu lệnh sau khi kiểm tra Đkiện. Còn case..of có thể có nhiều lựa chọn hơn. Chi tiết bạn xem tại đây
    exit: Thoát
    trunc: Lấy phần nguyên của số thực nào đó . VD trunc(3.14) =3
    Hai cái còn lại mình cũng không rõ

    Còn bài kiếm tra số Đx , theo ý kiến cá nhân của mình thì bạn chuyển số đó thành xâu rồi kiểm tra xâu đó có đối xứng không ?. Cách này dễ + ngắn hơn cách của bạn
    VNZ-Team Letitbit Killer

  4. Có 1 thành viên cảm ơn Ngox_TM cho bài viết này:
    god250895 (01-02-2012)

  5. #4
    god250895's Avatar
    god250895 vẫn chưa có mặt trong diễn đàn Rìu Bạc Đôi
    Tham gia
    Jul 2011
    Đến từ
    Thanhhoa City
    Bài
    550
    Cảm ơn
    374
    Điểm
    195/103 bài viết
    VR power
    0

    Default

    @chuduccuong3:
    ** trong FP là lũy thừa đó bạn. VD: x^n = x**n. Tuy nhiên phải khai báo thêm thư viện math:

    uses math;
    ........

    ---------- Bài thêm lúc 16:24 ---------- Bài trước là lúc 16:22 ----------

    Trích Ngox_TM View Post
    exit: Thoát
    Thoát ? Bạn có thể nói rõ hơn đc ko ?

  6. Có 1 thành viên cảm ơn god250895 cho bài viết này:
    chuduccuong3 (01-02-2012)

  7. #5
    don't let go's Avatar
    don't let go vẫn chưa có mặt trong diễn đàn Thành viên đang bị kỷ luật
    Tham gia
    Sep 2009
    Bài
    204
    Cảm ơn
    42
    Điểm
    129/61 bài viết
    VR power
    0

    Default

    Trích god250895 View Post
    @chuduccuong3:
    ** trong FP là lũy thừa đó bạn. VD: x^n = x**n. Tuy nhiên phải khai báo thêm thư viện math:

    uses math;
    ........

    ---------- Bài thêm lúc 16:24 ---------- Bài trước là lúc 16:22 ----------



    Thoát ? Bạn có thể nói rõ hơn đc ko ?
    exit là lệnh thoát một chuơng trình con hay hàm nào đó
    còn break là thoát một vòng for hay while hay repeat chứa nó

  8. #6
    Tung_Huynh's Avatar
    Tung_Huynh vẫn chưa có mặt trong diễn đàn Cống hiến cho [V-Z]
    Tham gia
    Jul 2009
    Đến từ
    Thái Nguyên
    Bài
    6.792
    Cảm ơn
    1.543
    Điểm
    4.118/2.749 bài viết
    VR power
    0

    Default

    Trích god250895 View Post
    Mình làm thế này nhưng chỉ nhập đc giá trị x đến 10 chữ số là nó chạy đúng, kể từ 11
    chữ số trở đi là false sạch Có phải quá giới hạn longint ko ?
    Bạn nào có cách khác hay và ngắn hơn thì share nhé !
    P/S: Đừng dùng string nhé !
    Code:
    function DoiXung(x: longint): boolean;
        var q,p,y: longint;{y la so nguoc cua x}
            i,d: integer; {d la dem so chu so}
        begin
            d:=0;
            q:=x; p:=x;
            while q <> 0 do
               begin
                  q:= q div 10;
                  d:= d+1;
               end;
            y:=0;
            for i:= d downto 1 do
               begin
                  y:= y + (p mod 10)*10**(i-1);
                  p:= p div 10;
               end;
            if y <> x then DoiXung:= false else DoiXung:=true;
        end;


    ---------- Bài thêm lúc 14:33 ---------- Bài trước là lúc 14:29 ----------

    À cho mình hỏi công dụng và cách dùng của từ khóa sau trong Pascal:
    case of
    exit
    trunc
    frac
    change
    vấn đề 10 số thì đc mà 11 số thì sai có thể là do kiểu dữ liệu bạn dùng
    longint chỉ giới hạn -2 tỷ đến + 2 tỷ
    ngoài khoảng đó sẽ có vấn đề (1 số trường hợp đặc biệt nào đó vẫn ko bị sao)

    muốn kiểm tra chính xác thì bạn thử
    read() 1 số vào
    write() số đó ra
    gọi hàm kiểm tra đối xứng số đó

    nếu write ra đúng số đã read mà cái Doixung() vẫn trả về False => code bạn lỗi
    nếu write ra số khác số đã read, cái Doixung() trả về False => vấn đề từ kiểu dữ liệu

    longint là kiểu dữ liệu dài rồi, muốn nhập 1 số dài hơn thì chuyển sang FreePascal có 1 số kiểu dài hơn thì phải, hoặc không, nếu chỉ cần kiểm tra mà ko cần tính toán gì thì sử dụng chuỗi (String) để nhập và kiểm tra

  9. Có 1 thành viên cảm ơn Tung_Huynh cho bài viết này:
    god250895 (01-02-2012)

  10. #7
    god250895's Avatar
    god250895 vẫn chưa có mặt trong diễn đàn Rìu Bạc Đôi
    Tham gia
    Jul 2011
    Đến từ
    Thanhhoa City
    Bài
    550
    Cảm ơn
    374
    Điểm
    195/103 bài viết
    VR power
    0

    Default

    Trích Tung_Huynh View Post
    vấn đề 10 số thì đc mà 11 số thì sai có thể là do kiểu dữ liệu bạn dùng
    longint chỉ giới hạn -2 tỷ đến + 2 tỷ
    ngoài khoảng đó sẽ có vấn đề (1 số trường hợp đặc biệt nào đó vẫn ko bị sao)

    muốn kiểm tra chính xác thì bạn thử
    read() 1 số vào
    write() số đó ra
    gọi hàm kiểm tra đối xứng số đó

    nếu write ra đúng số đã read mà cái Doixung() vẫn trả về False => code bạn lỗi
    nếu write ra số khác số đã read, cái Doixung() trả về False => vấn đề từ kiểu dữ liệu

    longint là kiểu dữ liệu dài rồi, muốn nhập 1 số dài hơn thì chuyển sang FreePascal có 1 số kiểu dài hơn thì phải, hoặc không, nếu chỉ cần kiểm tra mà ko cần tính toán gì thì sử dụng chuỗi (String) để nhập và kiểm tra
    Kiểu dữ liệu dài hơn là kiểu gì vậy bạn ?

    ---------- Bài thêm lúc 18:13 ---------- Bài trước là lúc 18:11 ----------

    1 tỷ = 10^9 = 10 số đúng ko nhỉ ?

  11. #8
    kien_coi_1997's Avatar
    kien_coi_1997 vẫn chưa có mặt trong diễn đàn Rìu Vàng Đôi
    Tham gia
    Apr 2009
    Đến từ
    Hà nội
    Bài
    1.118
    Cảm ơn
    693
    Điểm
    1.246/559 bài viết
    VR power
    0

    Default

    Trích god250895 View Post
    Kiểu dữ liệu dài hơn là kiểu gì vậy bạn ?

    ---------- Bài thêm lúc 18:13 ---------- Bài trước là lúc 18:11 ----------

    1 tỷ = 10^9 = 10 số đúng ko nhỉ ?
    sizeof(DWORD) = 4
    sizeof(LONGINT) = 4
    sizeof(QWORD) = 8

    QWORD là kiểu số nguyên không dấu 64 bit
    Nó biểu diễn trên 18 tỉ tỉ số

    0.. 18 ??? ??? ??? ??? ??? ???
    Blog về Pascal_chương trình pascal_ game pascal...
    Pascal-Chương trình hay, Unit hay, Game Pascal, các phần hỗ trợ trong Pascal.
    My blog: Hidden Content
    Hidden Content

  12. Có 1 thành viên cảm ơn kien_coi_1997 cho bài viết này:
    god250895 (03-02-2012)

  13. #9
    Tung_Huynh's Avatar
    Tung_Huynh vẫn chưa có mặt trong diễn đàn Cống hiến cho [V-Z]
    Tham gia
    Jul 2009
    Đến từ
    Thái Nguyên
    Bài
    6.792
    Cảm ơn
    1.543
    Điểm
    4.118/2.749 bài viết
    VR power
    0

    Default

    Trích god250895 View Post
    Kiểu dữ liệu dài hơn là kiểu gì vậy bạn ?

    ---------- Bài thêm lúc 18:13 ---------- Bài trước là lúc 18:11 ----------

    1 tỷ = 10^9 = 10 số đúng ko nhỉ ?
    Gu Gồ:

  14. Có 1 thành viên cảm ơn Tung_Huynh cho bài viết này:
    god250895 (03-02-2012)

  15. #10
    god250895's Avatar
    god250895 vẫn chưa có mặt trong diễn đàn Rìu Bạc Đôi
    Tham gia
    Jul 2011
    Đến từ
    Thanhhoa City
    Bài
    550
    Cảm ơn
    374
    Điểm
    195/103 bài viết
    VR power
    0

    Default

    Thanks kien coi vs Tung Huynh nha ! Tested and OK !
    À có bài này post lâu r mà ko ai giúp. Giúp mình vs nha:

  16. #11
    devilin's Avatar
    devilin vẫn chưa có mặt trong diễn đàn Búa Gỗ Đôi
    Tham gia
    Apr 2013
    Đến từ
    Lâm Đồng
    Bài
    37
    Cảm ơn
    9
    Điểm
    0/0 bài viết
    VR power
    0

    Default

    ai giúp mình bài này cái
    đề: Xâu đối xứng là xâu đọc từ trái qua phải giống như đọc từ phải qua trái, chẳng hạn các xâu′abab′, ′madam ′ là các xâu đối xứng.
    Người ta định nghĩa bậc đối xứng của xâu , kí hiệu deg(S), như sau:
    - Nếu không phải là xâu đối xứng hoặc có độ dài bằng 1 thì bậc đối xứng của bằng 0
    (viết là: deg(S) = 0)
    ĐỀ CHÍNH THỨC
    - Nếu là xâu đối xứng có độ dài lớn hơn 1, giả sử =S1S2…SN(N > 1), thì bậc đối xứng
    của được tính theo công thức: deg(S) = 1 + deg(T), trong đó xâu T là nửa trái của S theo
    nghĩa: T = S1S2 …Sk với = (N+ 1) div 2.
    Chẳng hạn:
    - deg(′x') = 0 vì ′x′ có độ dài bằng 1
    - deg(′x0′) = 0 vì ′x0′ không đối xứng
    - deg(′x0x' ) = 1 vì deg(′x0x′) = 1 + deg(′x0′)
    - deg(′x0xx0x') = 2 vì deg('x0xx0x ′) = 1 + deg(′ x0x')
    Cho xâu độ dài không vượt quá 200 chỉ gồm các chữ cái Latin in thường, hãy xác định bậc
    đối xứng của .
    Dữ liệu (PALINDEG.INP)
    - Dòng 1: xâu S.
    Kết quả (PALINDEG.OUT)
    - Dòng 1: số nguyên là bậc đối xứng của xâu S.
    Ví dụ:
    PALINDEG.INP
    bobobbobob
    PALINDEG.OUT
    3

 

 

Quyền sử dụng

  • 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ể tự sửa bài viết của mình
  •