Mấy bạn xem giùm mình cái thuật toán để đổi từ thập phân sang nhị phân: _ Nhập n _ Lấy phần dư của n/2, lặp cho đến khi fần nguyên của fép chia bằng 0. _ Đảo kết quả Còn đổi từ nhị phân sang thập fân thì pó tay, ai biết chỉ giùm ^^!
* Duyệt qua hết chiều dài của chuỗi nhị phân - Kiểm tra số có là 0 hay 1 - Nếu là 0 thì để yên không làm gì - Nếu là 1 thì tăng thêm 2 (Nhị phân) - Sau đó lũy thừa với số ký tự còn lại trong chuỗi - Lặp đi lặp lại cho đến ký tự cuối cùng - Trả về kết quả là một chuỗi hay chuyển sang số. Hàm chuyển Số nhị phân sang thập phân : Public Function np2tp(sonp As String) As String Dim i As Integer Dim sotp As Long On Error GoTo ErrorHandler ' Duyet qua chieu dai chuoi nhi phan For i = Len(sonp) To 1 Step -1 ' Kiem tra ky tu. khong phu` ho.p (ngoa`i 0 va` 1) If Asc(Mid(sonp, i, 1)) < 48 Or _ Asc(Mid(sonp, i, 1)) > 49 Then sotp = "" Err.Raise 1002, "NP2TP", "So khong phu hop" End If ' Neu la` 1 thi` tang them 2 luy~ thua` so la`n la.p va` them no vao` ' sotp (so la`n la.p la` so' ky' tu. co`n la.i trong chuoi~ nhi. phan) If Mid(sonp, i, 1) And 1 Then sotp = sotp + 2 ^ (Len(sonp) - i) End If Next i ' Tra ve` gia' tri. sotp nhu la` 1 chuoi~ np2tp = sotp ErrorHandler: End Function
Mấy bạn có ai giải thích rõ ràng giùm mình về hàm Do...Loop ko? Mỗi loại của hàm thì dùng trong trường hợp nào?
Do...Loop là cú pháp vòng lặp chứ hông phải là hàm. Vòng lặp có một số kiểu khác nhau. * Vòng lặp For...Next - Trước tiên gặp For nó sẽ kiểm tra điều kiện được đặt ra + Nếu điều kiện đúng sẽ thực hiện các bước tiếp theo bên trong, cuối cùng gặp Next sẽ quay lên đầu thay đổi giá trị rồi tiếp tục kiểm tra điều kiện cứ thế lặp cho đến khi điều kiện sai. Điều kiện sai sẽ thoát khỏi vòng lặp và thực hiện tiếp các câu lệnh kế tiếp. * Vòng lặp Do...While - Trước tiên gặp Do nó sẽ thực hiện các bước tiếp theo bên trong cuối cùng gặp While sẽ kiểm tra điều kiện được đặt ra nếu đúng là quay lên trên thực hiện tiếp còn sai thì thoát khỏi vòng lặp Các vòng lặp tùy theo yêu cầu cần kiểm tra điều kiện trước hay sau để dùng thôi. Không hiểu nữa thì tui cho ví dụ ::)
Trong vòng lặp Do...While: Cái Đk là mình đặt sau While hay là sau Do? Cho mình 1 vdụ đơn giản đi Còn Loop? Until?
Đặt dk sau while ví dụ: int n; do printf("Hay nhập số dương n: "); scanf("%d",&n); while(n<=0) Máy sẽ thực hiện câu lệnh này n lần cho tới khi nào bạn nhập đúng số n là số dương thì thôi.
@yphanh2002 : người ta đang hỏi visual basic >.< Do...While là tên gọi chung, trong VB6 thì nó là Do While...Loop Do While...Loop khác Do Until loop ở chỗ Do WHile...Loop sẽ ngưng khi điều kiện sai còn Do Until ngưng khi điều kiện đúng (ko kể mấy trường hợp dùng lệnh exit). VD: private sub form_load() Do Until (Biet) 'Hoi toi khi nao no biet thi thoai, cung co the ghi Biet = true 'nhưng như thế là thừa if msgbox("1 + 1 = may?") = 2 then ' Neu no tra loi dung 1 + 1 = 2 Biet = true 'Thi tha cho no ^^ end if loop end sub đó là ví dụ về Do Until, nếu dùng Do While thì viết điều kiện là [Do While not Biet] Cuối cùng, mấy cái này bạn lên google gõ Do WHile in VB6 rồi tìm kiếm đằng nào chả ra 1 lèo ví dụ, hỏi làm gì cho mệt ^^ 1 tài liệu tốt : http://www.vovisoft.com/VisualBasic/ Binary to Dec: ví dụ dùng Do Until -Cách làm : ví dụ ở số thập phân, ta có 4125 = (4*10^3) + (1*10^2) + (2*10^1) + (5*10^0) = 4000 + 100 + 20 + 5 Ở số nhị phân cũng tương tự : 101101 = (1*2^5) + (0*2^4) + (1*2^3) + (1*2^2) + (0*2^1) + (1*10^0) = 32 + 0 + 8 + 4 + 0 + 1 = 45 (dec) Mã: private function BinToDec(bin as string) [COLOR="SeaGreen"]'Ví dụ bin = "1011"[/COLOR] dim soA as integer dim i as integer dim soB as integer [COLOR="green"] i = 0 '3 cái phép gán này là thừa ^^[/COLOR] soA = 0 soB = 0 do until i = len(bin) - 1 [COLOR="green"]'ví dụ i = 0[/COLOR] if mid(bin,i,1) = "1" then [COLOR="green"]' mid(bin,i,1) = kí tự thứ đầu bên trái của bin, tức = "1"[/COLOR] soA = val(mid(bin,i,1) ) * 2 ^ (len(bin)-i-1) [COLOR="green"]'ta lấy chữ số đầu tiên bên trái, nhân với (độ dài của dãy trừ 1)[/COLOR] [COLOR="Green"]'soA = 1 * 2^3 (vì len(bin) ở đây = 4, i = 0 => len(bin)-i-1 = 3[/COLOR] soB = soB + soA [COLOR="green"]'RỒi cộng dồn[/COLOR] elseif mid(bin,i,1) <> "0" bintodec = 0 Exitfunction [COLOR="green"]'Hay là [COLOR="Blue"]Exit Function [/COLOR]gì đó ^^[/COLOR] end if i = i + 1 [COLOR="green"]'tăng i lên 1 để đọc số kế[/COLOR] loop bintodec = soB [COLOR="green"]'Kết quả[/COLOR] end function
Ai ghi giùm mình cái thuật toán tìm ước số của 1 số, đa tạ Bạn Ice giải thích giùm mình chỗ Do Until i = len(bin)-1 đc ko? Nếu theo cái vụ bin = 1011 của bạn thì i = 3?
xí, cho hỏi lại, trong cú fáp lặp Do...Loop, làm sao biết khi nào dùng While, khi nào dùng until? Còn cái Next Loop là chi rứa?
Bác ơi, tui hỏi khi nào xài Do While...Loop, và khi nào xài Do Until...Loop muh. Câu tương tự cho Do...Loop While và Do...Loop until
Những cái này tui nghĩ mở sách ra là có liền thôi, nếu đã muốn học thì nên đọc sách chứ lên đây hỏi thì biết đến bao giờ mới học xong. Ví dụ tính tổng từ 1 đến n Tong =0 i=1 + Nếu dùng Do While....Loop Do While (i<=n) Tong=Tong+i i=i+1 Loop + Nếu dủng Do Until....Loop Do Until (i>n) Tong=Tong+i i=i+1 Loop + Nếu dùng Do ...Loop While Do Tong=Tong+i i=i+1 Loop While (i<=n) + Nếu dủng Do Until....Loop Do Tong=Tong+i i=i+1 Loop Until (i>n)
cái code tính tổng của mình nó thế này Mã: Function Tong(n As Integer, i As Integer) As Integer n = Val(txtN) Tong = 0 For i = 1 To n Tong = Tong + (-1) ^ (i + 1) * i Next i End Function Và phần xuất ra nó thế này Mã: Private Sub MnuTong_Click() Dim n As Integer n = Val(txtN) txtKQ.Text = Tong(n) End Sub Và khi chạy nó báo Argument not Optional Ai giải thích giùm, plz
Function và Sub cơ bả là giống nhau về cách vận hành, khác nhau ở chỗ Function có trã về giá trị còn Sub thì không, ngay từ khai báo đầu tiên đã thấy được rồi. VD : FUNCTION Syntax Private hay Public [Tên Fuction] ( [Tên biến] As [Kiểu dữ liệu]) As [Kiểu giá trị trả về] là xong còn SUB Syntax Private hay Public [Tên Sub] () là đủ