Thông tin
  • Đánh dấu xác nhận câu hỏi đã được giải quyết để giúp diễn đàn nâng cao chất lượng [cách sử dụng]
  • Vui lòng đọc nội qui diễn đàn để tránh bị xóa bài viết [nội qui]
  • Tìm kiếm trước khi đặt câu hỏi

Chuyển số thập phân sang phân số

Đây là nơi để các bạn trao đổi về cấu trúc dữ liệu và giải thuật

Điều hành viên: Điều hành

Chuyển số thập phân sang phân số

Gửi bàigửi bởi f1_tnl » Chủ nhật 27/12/2009 9:50 am

Có cách nào để chuyển số thập phân sang phân số (áp dụng được cho lập trình máy tính) không?
f1_tnl
Thành viên chính thức
Thành viên chính thức
 
Bài viết: 16
Ngày tham gia: Thứ 6 19/09/2008 10:03 pm
Đã cảm ơn: 0 lần
Được cảm ơn: 0 lần

Re: Chuyển số thập phân sang phân số

Gửi bàigửi bởi truongphu » Chủ nhật 27/12/2009 11:29 am

1- Với số Pi: (thập phân siêu việt); số căn: (thập phân vô hạn) thì thua

2- Các số thập phân hữu hạn và thập phân vô hạn tuần hoàn đều có thể chuyển qua phân số

a- Thập phân hữu hạn: Đổi ra phân số thập phân

* tử số là số nguyên gồm tất cả ký tự số của số thập phân hữu hạn
* mẫu số là 10^n; mà n là tổng số ký tự thập phân

vd: 21,458 = 21458 / 10^3

Sau khi có được phân số thập phân, tiến hành giản lược phân số
- Cho vòng lặp i đi từ 2 đến phần nguyên của căn 2 tử số
- Nếu tử số và mẫu số cùng chia chẵn cho i thì tiến hành

b- Thập phân vô hạn tuần hoàn: đó là lim của phần thập phân tuần hoàn.

* vd với số 0,(9)
lim 0.(9) =1

* vd với số 0,(3)
x = 0,(3)
10x = 3,(3) = 3 + x
9x = 3
x = 3 / 9
x = 1 / 3

* vd với số 0,(714285)
y = 0,(714285)
10^6x = 714285,(714285) = 714285 + y
999999y = 714285
y = 714285 / 999999
y = 5 / 7

c- Làm mò, không cần lý luận: phần nguyên bỏ, khảo sát phần thập phân
Cho 2 vòng lặp lồng nhau: i từ 1 đến 1000 và j cũng thế. Tính i/j. Nếu kết quả bằng phần thập phân thì
i/j là phân số cần tìm (của phần thập phân)

Có thể còn cách khác chăng?
o0o--truongphu--o0o

.........
Ghé thăm:
Chuyện Linh Tinh
Hình đại diện của thành viên
truongphu
VIP
VIP
 
Bài viết: 4721
Ngày tham gia: Chủ nhật 04/11/2007 10:57 am
Đến từ: Cam Đức, Khánh hòa
Đã cảm ơn: 13 lần
Được cảm ơn: 467 lần

Re: Chuyển số thập phân sang phân số

Gửi bàigửi bởi chipmunk » Chủ nhật 03/04/2011 4:29 pm

Cái này hay đây, mình cũng rất thắc mắc
Chuyển từ phân số sang thập phân thì khả thi, nhưng còn chuyển ngược lại thì mình bó tay
nhưng phải lưu số dạng mảng và tự tạo hàm chia
chipmunk
Thành viên tích cực
Thành viên tích cực
 
Bài viết: 125
Ngày tham gia: Thứ 2 28/03/2011 9:19 am
Đã cảm ơn: 2 lần
Được cảm ơn: 5 lần

Re: Chuyển số thập phân sang phân số

Gửi bàigửi bởi VuVanHoanh » Chủ nhật 03/04/2011 4:33 pm

Mình đưa ra thuật toán nè, sau đó nếu rảnh thì mình code cho.
Nhân phân số ấy với 10^x để thành số nguyên.
Và mình nhớ ở đâu có code rút gọn phân số bằng C++, khi nào rảnk mình conv sang VB cho.
Dead.
Hình đại diện của thành viên
VuVanHoanh
Thành viên danh dự
Thành viên danh dự
 
Bài viết: 1256
Ngày tham gia: Thứ 5 03/06/2010 9:23 pm
Đến từ: Kim Sơn - Đông Triều - Quảng Ninh
Đã cảm ơn: 22 lần
Được cảm ơn: 135 lần

Re: Chuyển số thập phân sang phân số

Gửi bàigửi bởi VuVanHoanh » Chủ nhật 03/04/2011 9:10 pm

Có cách rồi, nếu là số hữu tỉ và phần thập phân đếm được thì đã có code hoàn chỉnh để giải :)
Dead.
Hình đại diện của thành viên
VuVanHoanh
Thành viên danh dự
Thành viên danh dự
 
Bài viết: 1256
Ngày tham gia: Thứ 5 03/06/2010 9:23 pm
Đến từ: Kim Sơn - Đông Triều - Quảng Ninh
Đã cảm ơn: 22 lần
Được cảm ơn: 135 lần

Re: Chuyển số thập phân sang phân số

Gửi bàigửi bởi tdat00 » Thứ 2 04/04/2011 9:52 pm

truongphu đã viết:* vd với số 0,(3)
x = 0,(3)
10x = 3,(3) = 3 + x
9x = 3
x = 3 / 9
x = 1 / 3

* vd với số 0,(714285)
y = 0,(714285)
10^6x = 714285,(714285) = 714285 + y
999999y = 714285
y = 714285 / 999999
y = 5 / 7



Cái này hồi lớp 9 cũng đã học lóm được từ sách nhưng không hiểu tại sao. Sau này cũng ko chịu tìm hiểu lại. Giờ mới đọc được cách chứng minh, thành thật cảm ơn bác, hay thật ^^
Hình đại diện của thành viên
tdat00
Thành viên tích cực
Thành viên tích cực
 
Bài viết: 136
Ngày tham gia: Thứ 7 29/03/2008 8:18 am
Đến từ: QNgãi
Đã cảm ơn: 8 lần
Được cảm ơn: 2 lần

Re: Chuyển số thập phân sang phân số

Gửi bàigửi bởi VuVanHoanh » Thứ 3 05/04/2011 11:56 am

Chuyển số thập phân xác định được phần thập phân thành phân số:
Syntax: [ Download ] [ Hide ]
Using Visual Basic Syntax Highlighting
  1. Public Function RutGonPS(a As Long, b As Long) As Variant
  2.     Dim ts As Integer, ms As Integer, n As Integer, i As Integer
  3.     If b = 0 Then
  4.         MsgBox "Phân so^' không ho+.p le^."
  5.     Else
  6.         If a <> 0 Then
  7.             ts = a: ms = b
  8.             Do
  9.                 n = ms
  10.                 ms = ts Mod ms
  11.                 ts = n
  12.             Loop Until ms = 0
  13.             ms = b / n
  14.             ts = a / n
  15.             If ms < 0 Then
  16.                 RutGonPS = Array(-ts, -ms)
  17.             Else
  18.                 RutGonPS = Array(ts, ms)
  19.             End If
  20.         Else
  21.             RutGonPS = Array(0, ms)
  22.         End If
  23.     End If
  24. End Function
  25.  
  26. Public Function DblToPS(num As String)
  27.     Dim i As Integer, k As Long, v As Variant
  28.     ' O+? ?ây dùng da^'u "." ?e^? nga(n cách pha^`n tha^.p phân
  29.    i = Len(CStr(num)) - InStrRev(num, ".")
  30.     k = 10 ^ CInt(i)
  31.     v = RutGonPS(CLng(CDbl(num) * k), CLng(k))
  32.     MsgBox v(0) & "/" & v(1)
  33. End Function
  34.  
Parsed in 0.000 seconds, using GeSHi 1.0.8.11

Function đã test !!!
Dead.
Hình đại diện của thành viên
VuVanHoanh
Thành viên danh dự
Thành viên danh dự
 
Bài viết: 1256
Ngày tham gia: Thứ 5 03/06/2010 9:23 pm
Đến từ: Kim Sơn - Đông Triều - Quảng Ninh
Đã cảm ơn: 22 lần
Được cảm ơn: 135 lần

Re: Chuyển số thập phân sang phân số

Gửi bàigửi bởi chipmunk » Thứ 5 07/04/2011 10:44 am

phần
Mã: Chọn tất cả
           Do
                n = ms
                ms = ts Mod ms
                ts = n
            Loop Until ms = 0

có phải là tìm ước số chung lớn nhất không
chipmunk
Thành viên tích cực
Thành viên tích cực
 
Bài viết: 125
Ngày tham gia: Thứ 2 28/03/2011 9:19 am
Đã cảm ơn: 2 lần
Được cảm ơn: 5 lần

Re: Chuyển số thập phân sang phân số

Gửi bàigửi bởi VuVanHoanh » Thứ 5 07/04/2011 11:01 am

Đúng. Thực ra cái Func được chuyển từ một bài tìm USCLN bằng C++. Mình vẽ vời thêm mấy cái là OK ấy mà :)
Dead.
Hình đại diện của thành viên
VuVanHoanh
Thành viên danh dự
Thành viên danh dự
 
Bài viết: 1256
Ngày tham gia: Thứ 5 03/06/2010 9:23 pm
Đến từ: Kim Sơn - Đông Triều - Quảng Ninh
Đã cảm ơn: 22 lần
Được cảm ơn: 135 lần


Quay về Cấu trúc dữ liệu và giải thuật

Ai đang trực tuyến?

Đang xem chuyên mục này: Không có thành viên nào đang trực tuyến1 khách