• Vui lòng đọc nội qui diễn đàn để tránh bị xóa bài viết
  • Tìm kiếm trước khi đặt câu hỏi

bài tập về xâu mong mọi người giúp đỡ

Góc trao đổi, hỏi đáp của ngôn ngữ Visual Basic 6 và Visual Basic Script

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

vinamichi
Bài viết: 5
Ngày tham gia: T.Tư 18/04/2012 8:49 pm

bài tập về xâu mong mọi người giúp đỡ

Gửi bàigửi bởi vinamichi » T.Hai 04/06/2012 9:02 am

Xây dựng chương trình cho phép nhập vào 1 xâu kí tự bất kì,sau đó tìm ra xâu con có độ dài lớn nhất những chữ a trong xâu mẹ
VD:abcaaafhfaaft xâu con dài nhất những chữ a là:aaa



Hình đại diện của người dùng
xuanha
Guru
Guru
Bài viết: 1230
Ngày tham gia: T.Năm 19/08/2010 4:25 pm
Đến từ: Ban Tổ chức Thành uỷ Hưng Yên, tỉnh Hưng Yên
Has thanked: 13 time
Been thanked: 380 time
Liên hệ:

Re: bài tập về xâu mong mọi người giúp đỡ

Gửi bàigửi bởi xuanha » T.Hai 04/06/2012 12:58 pm

Bài của bạn đây:

  1. Private Function Max(xau As String) As String
  2. Dim M As Integer
  3. Dim i, j As Integer
  4. Dim chuoi() As String
  5. For j = 1 To Len(xau)
  6. If Mid(xau, j, 1) <> "a" Then xau = Replace(xau, Mid(xau, j, 1), " ")
  7. Next
  8. chuoi = Split(xau, " ")
  9. M = Len(chuoi(0))
  10. For i = 1 To UBound(chuoi)
  11. If Len(chuoi(i)) > M Then
  12. M = Len(chuoi(i))
  13. Max = chuoi(i)
  14. Else
  15. Max = chuoi(0)
  16. End If
  17. Next
  18. End Function
  19.  
  20. Private Sub Command1_Click()
  21. MsgBox "Chuoi dai nhat la " & Max(Text1.Text)
  22. End Sub
  23.  

Hình đại diện của người dùng
VuVanHoanh
Thành viên danh dự
Thành viên danh dự
Bài viết: 1259
Ngày tham gia: T.Năm 03/06/2010 9:23 pm
Đến từ: Kim Sơn - Đông Triều - Quảng Ninh
Has thanked: 22 time
Been thanked: 138 time
Liên hệ:

Re: bài tập về xâu mong mọi người giúp đỡ

Gửi bàigửi bởi VuVanHoanh » T.Hai 04/06/2012 1:10 pm

  1. Private function Check(s$) as string
  2.     Dim tmp as string
  3.     do
  4.         tmp = tmp & "a"
  5.     loop until instr(1, s, tmp) = 0
  6.     check = left(tmp, len(tmp) - 1)
  7. end function
  8.  
  9. private sub command1_click()
  10.     msgbox check(text1.text)
  11. end sub

cái nì có đc coi là thủ thuật hok nhỉ ;))
Since 2008...
One love! :x

vinamichi
Bài viết: 5
Ngày tham gia: T.Tư 18/04/2012 8:49 pm

Re: bài tập về xâu mong mọi người giúp đỡ

Gửi bàigửi bởi vinamichi » T.Ba 05/06/2012 8:55 am

2 anh có thể giải thích thuật toán được không ạ.Em chưa hiểu lắm:((

Hình đại diện của người dùng
VuVanHoanh
Thành viên danh dự
Thành viên danh dự
Bài viết: 1259
Ngày tham gia: T.Năm 03/06/2010 9:23 pm
Đến từ: Kim Sơn - Đông Triều - Quảng Ninh
Has thanked: 22 time
Been thanked: 138 time
Liên hệ:

Re: bài tập về xâu mong mọi người giúp đỡ

Gửi bàigửi bởi VuVanHoanh » T.Ba 05/06/2012 1:35 pm

1. thuật toán của xuanha: thay thế tất cả các ký tự không phải "a" thành dấu " " rồi dùng split để cắt chuỗi ra thành các mảng chữ a, rồi so sánh, tìm ra chuỗi có độ dài lớn nhất trong mảng.
2. thuật toán của VuVanHoanh: khởi tạo một chuỗi "a" rồi tìm trong chuỗi, nếu có thì tăng thêm một chữ a nữa là "aa" rồi lại tìm trong mảng, cứ như vậy, thêm và tìm cho đến khi nào không thể tìm thấy được nữa thì xuất ra chuỗi trước đó, tức là chuỗi dài nhất.
Since 2008...
One love! :x

KIDLINUX
Thành viên chính thức
Thành viên chính thức
Bài viết: 12
Ngày tham gia: T.Năm 27/03/2008 10:52 am
Has thanked: 7 time

Re: bài tập về xâu mong mọi người giúp đỡ

Gửi bàigửi bởi KIDLINUX » T.Tư 13/06/2012 8:41 am

Mình thấy thuật toán lúc sau hay quá!

Hình đại diện của người dùng
truongphu
VIP
VIP
Bài viết: 4760
Ngày tham gia: CN 04/11/2007 10:57 am
Đến từ: Cam Đức, Khánh hòa
Has thanked: 14 time
Been thanked: 515 time

Re: bài tập về xâu mong mọi người giúp đỡ

Gửi bàigửi bởi truongphu » T.Tư 13/06/2012 9:13 am

KIDLINUX đã viết:Mình thấy thuật toán lúc sau hay quá!

Đúng rồi, bản thân tôi cũng không nghĩ được như thế! =D>

VuVanHoanh đã viết:cái nì có đc coi là thủ thuật hok nhỉ ;))


Đương nhiên rồi, THUẬT TOÁN hay như thế mà không vào Box Thủ thuật, hay ít ra là Box Thuật toán thì uổng quá.

Phải KÉ mới được: Dù VuVanHoanh viết code quá tốt, vẫn còn chỗ để xen vào đấy nha

Thủ thuật (hay thuật toán) tìm xâu ký tự dài nhất trong chuỗi

  1. Function XâuDàinhâtTrongChuôi(ByVal Kýtu$, ByVal Chuôi$) As String
  2.     Dim tmp$
  3.     Do ' author: VuVanHoanh & truongphu
  4.        tmp = tmp & Kýtu
  5.     Loop Until InStr(Chuôi, tmp) = 0
  6.     XâuDàinhâtTrongChuôi = Mid(tmp, 2)
  7. End Function
  8.  
  9. Private Sub Command2_Click()
  10. MsgBox XâuDàinhâtTrongChuôi("a", Text1.Text)
  11. End Sub


* Dòng 1: thêm đối số Kýtu để tổng quát hóa Function
* Dòng 5: loại bỏ start = 1
* Dòng 6: dùng hàm Mid gọn hơn Left rối rắm

VuVanHoanh thấy ok không? :>
(gởi một thank you)

Nhờ quý Điều hành chuyển Box Thuật toán, cảm ơn
(để khỏi mất công sửa phần quy định của bài viết Box Thủ thuật)
o0o--truongphu--o0o

.........
Ghé thăm:
Chuyện Linh Tinh


Quay về “Visual Basic 6 và Visual Basic Script (VB & VBS)”

Đang trực tuyến

Đang xem chuyên mục này: Google [Bot]11 khách