• 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

Moderator: tungblt

vinamichi
Posts: 5
Joined: Wed 18/04/2012 8:49 pm

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

Postby vinamichi » Mon 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



User avatar
xuanha
Guru
Guru
Posts: 1230
Joined: Thu 19/08/2010 4:25 pm
Location: Ban Tổ chức Thành uỷ Hưng Yên, tỉnh Hưng Yên
Has thanked: 13 times
Been thanked: 380 times
Contact:

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

Postby xuanha » Mon 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.  

User avatar
VuVanHoanh
Thành viên danh dự
Thành viên danh dự
Posts: 1259
Joined: Thu 03/06/2010 9:23 pm
Location: Kim Sơn - Đông Triều - Quảng Ninh
Has thanked: 22 times
Been thanked: 138 times
Contact:

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

Postby VuVanHoanh » Mon 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
Posts: 5
Joined: Wed 18/04/2012 8:49 pm

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

Postby vinamichi » Tue 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:((

User avatar
VuVanHoanh
Thành viên danh dự
Thành viên danh dự
Posts: 1259
Joined: Thu 03/06/2010 9:23 pm
Location: Kim Sơn - Đông Triều - Quảng Ninh
Has thanked: 22 times
Been thanked: 138 times
Contact:

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

Postby VuVanHoanh » Tue 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
Posts: 13
Joined: Thu 27/03/2008 10:52 am
Has thanked: 7 times

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

Postby KIDLINUX » Wed 13/06/2012 8:41 am

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

User avatar
truongphu
VIP
VIP
Posts: 4777
Joined: Sun 04/11/2007 10:57 am
Location: Cam Đức, Khánh hòa
Has thanked: 14 times
Been thanked: 522 times

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

Postby truongphu » Wed 13/06/2012 9:13 am

KIDLINUX wrote: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 wrote: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


Return to “Visual Basic 6 và Visual Basic Script (VB & VBS)”

Who is online

Users browsing this forum: No registered users and 17 guests