Giúp mình làm bài tập VB6

Thảo luận trong 'Lập trình & Đồ hoạ' bắt đầu bởi TKH, 9/1/08.

  1. TKH

    TKH Fire in the hole! Lão Làng GVN

    Tham gia ngày:
    28/11/04
    Bài viết:
    2,711
    Nơi ở:
    Hồ Chí Minh
    Mình nhận 1 bài tập từ thầy, đề là: Chuyển số thập phân sang hệ 2, hệ 8 và hệ 16, cho phép xài code sưu tầm nhưng phải hiểu, ko dc phép xài code có sẵn của bác Bill (lệnh hex() và oct() cho hệ 8 và hệ 16). Yêu cầu là cái gì cũng phải chuyển dc, kể cả dấu - và phần thập phân (như 1.25)

    Mấy bạn giúp mình dc hem, ý tưởng của mình là:
    -Dùng lệnh InStr để dò dấu ".", nếu thấy sẽ tách ra 2 phần nguyên và thập phân, ko thì gán cho nó là phần nguyên.
    -Dấu "-" thì cũng dùng lệnh InStr để tìm, nếu thấy nó sẽ chuyển kết quả cuối cùng từ 0 ->1 và từ 1 ->0 (phương pháp bù 1)
    -Phần thập phân sẽ dc nhân lên (tuỳ hệ nào mà sẽ x2, x8 hay x16), dùng left lấy số đầu tiên, mid để lấy phần còn lại x tiếp. Khi x mà gặp số vô hạn tuần hoàn (dạng như số 0.3 mà x2 mãi ko thành 0) thì sẽ dừng lại (thầy bảo dùng bit giới hạn nhưng mình ko hiểu lắm)
    -Phần nguyên sẽ dc chia lấy dư mãi cho đến khi ko chia dc nữa, ghép và đảo các số dư (chắc dùng reverse() ). Sau đó ghép phần nguyên và phần thập phân (đã tính) cho ra kết quả
    -Riêng hệ 16 sẽ có hàm để đổi các số từ 10 trở lên sang các chữ cái.

    Ý tưởng là thế, nhưng lúc thực hiện mình tắc luôn (chủ yếu ở phần chia số nguyên, nhân thập phân và đảo số khi đụng số âm). Theo mình chỉ cần làm dc hệ 2 là hệ 8 và 16 cũng làm dc tương tự, hy vọng các bạn giúp mình T.T
     
  2. TKH

    TKH Fire in the hole! Lão Làng GVN

    Tham gia ngày:
    28/11/04
    Bài viết:
    2,711
    Nơi ở:
    Hồ Chí Minh
    Hix, ko ai chỉ giúp, buồn ghê :(

    Thôi mấy cái kia chắc mình tự làm dc, nhưng còn 1 phần mình thực sự bí, xin các bạn chỉ giùm, gần đến hạn rồi >.<

    Khi tách phần thập phân ra thì mình sẽ cứ x lên rồi lấy số đầu tiên cho đến khi = 0, thế nhưng nếu gặp phải số thập phân vô hạn tuần hoàn (0.3 thì nhân cỡ nào cũng ko = 0) thì phải làm thế nào ?

    Và ở hệ nhị phân số âm có thể dùng phương pháp bù 1, bù 2, nhưng ở hệ 8, hệ 16 thì biểu diễn nhưng thế nào ?
     

Chia sẻ trang này