Trang 1 / 2 12 LastLast
Hiển thị kết quả từ 1 đến 10 / 16

Chủ đề: Moi vao nghe!

  1. #1
    Tham gia
    09-05-2007
    Bài viết
    26
    Like
    0
    Thanked 0 Times in 0 Posts

    Moi vao nghe!

    fillchar: tai sao to do day mot mang voi gia tri la 1 thi xuat ra la 257, voi 2 thi 514, 3 thi 771..
    kho hiu ham nay wa
    inc: dung de lam j vay cac pac
    // cac pac thay ham nao thuong su dung thi noi ra lun dum em, hix em ngu wa the roi T_T
    Quote Quote

  2. #2
    Tham gia
    22-10-2007
    Bài viết
    5
    Like
    0
    Thanked 0 Times in 0 Posts
    ko viết có dấu bị xóa bài ráng chịu đó

  3. #3
    Tham gia
    17-10-2007
    Location
    Hà Nội
    Bài viết
    758
    Like
    0
    Thanked 8 Times in 7 Posts
    Ý thứ nhất: Bạn viết khó hiểu quá, xuất cái gì ra?
    Inc(n,i): dùng để tăng n lên i đơn vị, inc(n) để tăng n lên 1 đơn vị

  4. #4
    Tham gia
    16-11-2007
    Bài viết
    221
    Like
    0
    Thanked 1 Time in 1 Post
    fillchar chỉ fill đc toàn bộ số 0,các số khác ko có tác dụng,bạn chỉ thể ghi
    fillchar(x,sizeof(x),0) chứ ko thể ghi(x,sizeof(x),1 hoặc bất kỳ số nào.

  5. #5
    Tham gia
    09-05-2007
    Bài viết
    26
    Like
    0
    Thanked 0 Times in 0 Posts
    thanks phuclun, đó là tất cả những gì mình muốn biết về fillchar, nhưng cho hỏi, tại sao các số 1 thì lại là 257, 2 thi 514... Các số ấy từ đâu mà ra.

    Ham inc dùng để làm j, còn hàm nào thường gặp trong các bài toán chuỗi, tính toán... xin liệt kê, cú pháp và cách dùng các hàm thường gặp. Thanks

  6. #6
    Tham gia
    16-11-2007
    Bài viết
    221
    Like
    0
    Thanked 1 Time in 1 Post
    thú thật là tui cũng chỉ biết là ko đc xài các số khác 0 chứ cũng chưa bao giờ thử fill các số khác cũng như tại sao nó ra vậy.Bạn ham học hỏi,biết rõ ngọn ngành vậy là rất tốt nhưng theo tui thì cũng chẳng nên biết làm gì,chỉ cần biết là chỉ fill đc số 0 là đc rồi.
    Còn hàm inc(i) là thủ tục tăng biến đếm lên 1.inc(i)=i+1.Thay vì bạn viết i:=i+1 thì viết inc(i) nhìn sẽ gọn và đẹp mắt hơn thôi.
    Được sửa bởi phuclun lúc 08:42 ngày 01-01-2008

  7. #7
    Tham gia
    14-10-2007
    Location
    ô hay, đến từ đâu thì kệ người ta chứ :p
    Bài viết
    112
    Like
    0
    Thanked 19 Times in 7 Posts
    Bình thường tui vẫn xài fillchar đối với các số khác 0 và nó vẫn có kết quả là chính số đó.
    Nhưng hum nọ, tui chạy một bài, fillchar một mảng = max ( là một số cho trước và khác 0) thì cũng thấy nó ra như bạn nêu (
    257 thì phải) . Lúc đó tui tưởng máy móc có vấn đề, thế là về nhà chạy thử vẫn vậy và hơn nữa các bài mà tui làm trước đó fillchar <>0 vẫn chạy bình thường. Thấy sự lạ tui tìm hiểu mới bít hóa ra mấy bài trước mà nó vẫn ghi kết quả đúng thì toàn là mảng byte còn bài này là mảng integer

    Vậy là tui tạm rút ra rằng, với mảng byte, thì các số vẫn đúng còn với mảng integer và longint thì không phải vậy

    Đến lúc đó mới xem thư viện của pascal thì cũng thấy nó ghi là thủ tục này áp dụng đối với mảng byte Char hoặc boolean

    Theo ngu ý của tui thì là do kiểu byte ,char , và boolean đều sử dụng 1 byte ( 8 bit) ( các kiểu khác thì sử dụng nhiều hơn ) và đây gần như là một hàm bật các bit nên nó chỉ đúng với các kiểu dữ liệu có cấu trúc gồm 1 byte . Còn các kiểu dữ liệu kia, tui có vẻ có quy luật nhưng tiếc không thể tìm ra;
    Ví dụ như với mảng integer, nếu ta fillchar:
    1: 257 = 2^8 +1;
    2: 524 = 2^9 +2;
    3: 771 = 2^8 + 2^9 +3;
    4: 1028= 2^10 +4;
    5: 1285= 2^10+ 2^8 +5;
    ....

    Tóm lại là cũng không rõ cơ chế nó ra sao nữa


    Còn về inc, nếu bạn ghi inc(i) thì nó sẽ tăng i lên 1 đơn vị nhưng nếu bạn ghi inc(i,2) thì nó sẽ tăng i lên 2 đơn vị tương tự đối với giảm một số DEC:
    dec(i) <=> i:=i-1; dec(i,x) <=> i:=i-x;

    Và cũng lưu ý bạn phuclun là clrscr, halt(thoát khỏi chương trình chính) , break, exit (thoát khỏi chương trình con) đều là các thủ tục(procedure) chứ không phải là hàm (function)!
    Được sửa bởi cashier lúc 22:33 ngày 31-12-2007

  8. #8
    Tham gia
    17-10-2007
    Location
    Hà Nội
    Bài viết
    758
    Like
    0
    Thanked 8 Times in 7 Posts
    Theo ý kiến của tôi thì hàm Fillchar(x,sizeof(x),i) hoạt động như thế này: Hàm sẽ điền lần lượt các byte của dữ liệu này bằng giá trị byte của i (i được coi là chiếm một byte)
    Như vậy, đối với mảng kiểu integer hay longint (cả số cũng vậy), máy sẽ điền lần lượt các byte của dữ liệu:
    Fillchar 1=00000001 (1 byte= 8 bit -> phải có đủ 8 chữ số cả 0 và 1)
    -> Số được điền vào mỗi phần tử của mảng integer sẽ là:
    0000000100000001=257
    Fillchar 2=00000010
    -> Số được điền vào mỗi phần tử của mảng integer sẽ là:
    0000001000000010=524
    Tương tự với các giá trị khác

    Có gì sai sót mong các bạn góp ý

  9. #9
    Tham gia
    17-10-2007
    Location
    Hà Nội
    Bài viết
    758
    Like
    0
    Thanked 8 Times in 7 Posts
    Còn về thủ tục inc(n,i) (không phải là hàm đâu nhé) nghĩa là hàm để tăng giá trị của biến n lên i đơn vị, hàm này khác với lệnh n:=n+i ở chỗ nó không kiểm tra tính tràn số của dữ liệu, tốc độ nhanh hơn so với lệnh n:=n+i. Nhưng trong những bài toán phức tạp không nên dùng lệnh inc(n,i) mà nên viết theo cách bình thường (n:=n+i) để dễ kiểm soát tính tràn số của dữ liệu (kết hợp với việc đặt chỉ thị dịch là {$R+}

  10. #10
    Tham gia
    09-05-2007
    Bài viết
    26
    Like
    0
    Thanked 0 Times in 0 Posts
    Cảm ơn các bạn rất nhiều! Thằng bạn mình cũng điền vào mảng nhưng dùng fillword thì điền các số có kiểu thế nào cũng đúng không nhất thiết phải 1 byte
    @ mr_invincible: xin anh nói rõ hơn cho em biết về tính tràn số của dữ liệu và việc đặt chỉ thị dịch {$R+} // cảm ơn anh!

Trang 1 / 2 12 LastLast

Bookmarks

Quy định

  • Bạn không thể tạo chủ đề mới
  • Bạn không thể trả lời bài viết
  • 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
  •