Đánh giá chủ đề:
  • 0 Votes - 0 Average
  • 1
  • 2
  • 3
  • 4
  • 5
Kiểm tra dãy số nhập vào có các số trùng nhau hay không
#1
Mình mới tham gia diễn đàn. Mình không biết cái này có trên diễn đàn chưa. Nếu có rồi thì anh em thông cảm.
Nếu chưa có mình đánh liều xin mạo muội đưa ra một vấn đề như sau.

Kiểm tra một dãy số nhập vào có các số trùng nhau hay không? Các số nhập vào cách nhau khoảng trắng (phím Space). Ví dụ: 1 2 3 4 (kết quả: Không có số trùng nhau); 1 1 2 3 (kết quả: có số trùng nhau).

Giải quyết vấn đề như sau:
Bước 1. Tạo function kiểm tra

Mã PHP:
Public Function Daytrungnhau(st As String) As Boolean
    Dim kt 
As Integersophantu As Integer
    Dim ktso 
As String
    Dim kts 
As String
    Dim tohop
() As Integer 'Tạo mãng động do không biết số phần tự trong dãy số nhập vào là bao nhiêu'
    'Đếm số phần tử trong dãy số'
    
kt 1
    sophantu 
0
    kts 
st " "
    
Do While kt Len(kts)
        
ktso ""
        
Do While Mid(ktskt1) <> " "
            
ktso ktso Mid(ktskt1)
            
kt kt 1
        Loop
        sophantu 
sophantu 1
        kt 
kt 1
    Loop
    ReDim tohop
(sophantu) As Integer 'Tao lai mang voi so luong la sophantu kieu Integer'
    
kt 1
    
For 1 To sophantu 'Lay gia tri cac phan tu gan cho mang'
        
Do While kt Len(ktphieu)
        
ktso ""
            
Do While Mid(ktphieukt1) <> " "
                
ktso ktso Mid(ktphieukt1)
                
kt kt 1
            Loop
        tohop
(i) = Val(ktso'Đổi các ký tự số kiểu text thành số kiểu Number và gán cho mãng vị trí thứ i'
        
kt kt 1
        Loop
    Next i
    
'Kiểm tra các phần tử trong mãng có trùng nhau không'
    'Nếu trùng nhau thì gắn kết quả False và thoát khỏi hàm'
    
For 1 To sophantu 1
        
For 2 To sophantu
            
If tohop(i) = tohop(jThen
                Daytrungnhau 
False
                
Exit Function
            
End If
        
Next j
    Next i
    Daytrungnhau 
True 'Nếu đến cuối cùng không tìm được số trùng nhau thì gắn kết quả True'
End Function 

Bước 2. Giả sử tao có Nút lệnh tên là cmdKiemtra
Mã PHP:
Private Sub cmdKiemtra_Click()
  If 
Daytrungnhau(daysothen
     MsgBox 
"Có số trùng nhau"vbInformation"Thông báo!"
  
Else
     
MsgBox "Không có số trùng nhau"vbInformation"Thông báo!"
  
End If
End Sub 
Reply
Những người đã cảm ơn pnta , Truong Van Truong
#2
Tuyệt vời, vấn đề là ứng dụng của nó để làm gì, hình như mình chưa gặp trong công việc (đương nhiên là cá nhân mình), hi vọng giúp ích cho những ai cần. big green
Chữ ký của cpucloi Tôi chỉ biết mỗi một điều là những điều tôi biết được còn quá ít 021
Gmail: cgiahuy13@gmail.com


ღღღღღTài sản của cpucloi (View All Items) ღღღღღ
Reply
Những người đã cảm ơn
#3
Theo mình thì mình sử dụng một hàm trực thuộc

Tructhuoc(choidai as string, chuoingan as string)
if Instr(1,chuoidai,chuoingan) <> 0 then
Tructhuoc =True
else
Tructhuoc =false
end if
ENd function
Nếu có ròi thì không được nhập còn chưa có thì cứ nhập thoải mãi.
Giải pháp mình chọn chuỗi để xử lý

Theo mình thì mình sử dụng một hàm trực thuộc

[/php]Tructhuoc(choidai as string, chuoingan as string)
if Instr(1,chuoidai,chuoingan) <> 0 then
Tructhuoc =True
else
Tructhuoc =false
end if
ENd function[php]
Nếu có ròi thì không được nhập còn chưa có thì cứ nhập thoải mãi.
Giải pháp mình chọn chuỗi để xử lý
Chữ ký của tt1212 Present Nhận viết phần mềm, hỗ trợ viết phần mềm, hợp tác viết phần mềm trên nên Microsoft Access mọi phiên bản Liên hệ: Mr Đức -989276236. Email: Tantriviet.vnn@gmail.com website:http://www.tantrivietsoft.com/
Reply
Những người đã cảm ơn
#4
[quote='tt1212' pid='19490' dateline='1375427776']
Theo mình thì mình sử dụng một hàm trực thuộc

Tructhuoc(choidai as string, chuoingan as string)
if Instr(1,chuoidai,chuoingan) <> 0 then
Tructhuoc =True
else
Tructhuoc =false
end if
ENd function
Nếu có ròi thì không được nhập còn chưa có thì cứ nhập thoải mãi.
Giải pháp mình chọn chuỗi để xử lý

Theo mình thì mình sử dụng một hàm trực thuộc

[/php]Tructhuoc(choidai as string, chuoingan as string)
if Instr(1,chuoidai,chuoingan) <> 0 then
Tructhuoc =True
else
Tructhuoc =false
end if
ENd function
Mã PHP:
Nếu có ròi thì không được nhập còn chưa có thì cứ nhập thoải mãi.
Giải pháp mình chọn chuỗi để xử lý
[/quote]
nếu người ta nhập số 1 và số 11 thì sao
[hr]
Xin lỗi thuật toán trên có một chút nhầm lẫn ở 2 vòng lặp For cuối cùngChính xác là như sau:

[
php]
    For 
1 To sophantu 1
        
For +1 To sophantu
            
If tohop(i) = tohop(jThen
                Daytrungnhau 
False
                
Exit Function
            
End If
        
Next j
    Next i 
Reply
Những người đã cảm ơn
#5
(02-08-13, 11:34 AM)trav2t Đã viết: Mình mới tham gia diễn đàn. Mình không biết cái này có trên diễn đàn chưa. Nếu có rồi thì anh em thông cảm.
Nếu chưa có mình đánh liều xin mạo muội đưa ra một vấn đề như sau.

Kiểm tra một dãy số nhập vào có các số trùng nhau hay không? Các số nhập vào cách nhau khoảng trắng (phím Space). Ví dụ: 1 2 3 4 (kết quả: Không có số trùng nhau); 1 1 2 3 (kết quả: có số trùng nhau).

Giải quyết vấn đề như sau:
Bước 1. Tạo function kiểm tra

Mã PHP:
Public Function Daytrungnhau(st As String) As Boolean
    Dim kt 
As Integersophantu As Integer
    Dim ktso 
As String
    Dim kts 
As String
    Dim tohop
() As Integer 'Tạo mãng động do không biết số phần tự trong dãy số nhập vào là bao nhiêu'
    'Đếm số phần tử trong dãy số'
    
kt 1
    sophantu 
0
    kts 
st " "
    
Do While kt Len(kts)
        
ktso ""
        
Do While Mid(ktskt1) <> " "
            
ktso ktso Mid(ktskt1)
            
kt kt 1
        Loop
        sophantu 
sophantu 1
        kt 
kt 1
    Loop
    ReDim tohop
(sophantu) As Integer 'Tao lai mang voi so luong la sophantu kieu Integer'
    
kt 1
    
For 1 To sophantu 'Lay gia tri cac phan tu gan cho mang'
        
Do While kt Len(ktphieu)
        
ktso ""
            
Do While Mid(ktphieukt1) <> " "
                
ktso ktso Mid(ktphieukt1)
                
kt kt 1
            Loop
        tohop
(i) = Val(ktso'Đổi các ký tự số kiểu text thành số kiểu Number và gán cho mãng vị trí thứ i'
        
kt kt 1
        Loop
    Next i
    
'Kiểm tra các phần tử trong mãng có trùng nhau không'
    'Nếu trùng nhau thì gắn kết quả False và thoát khỏi hàm'
    
For 1 To sophantu 1
        
For 2 To sophantu
            
If tohop(i) = tohop(jThen
                Daytrungnhau 
False
                
Exit Function
            
End If
        
Next j
    Next i
    Daytrungnhau 
True 'Nếu đến cuối cùng không tìm được số trùng nhau thì gắn kết quả True'
End Function 

Bước 2. Giả sử tao có Nút lệnh tên là cmdKiemtra
Mã PHP:
Private Sub cmdKiemtra_Click()
  If 
Daytrungnhau(daysothen
     MsgBox 
"Có số trùng nhau"vbInformation"Thông báo!"
  
Else
     
MsgBox "Không có số trùng nhau"vbInformation"Thông báo!"
  
End If
End Sub 

Tối ưu cách của bạn một chút hé!

Cái chổ code bạn chuyển từ chuỗi số sang mảng số áh, bạn thử làm vầy xem sao he:
Mã PHP:
dim tohop
dim sophantu 
as integer

tohop 
Split(st" ")           'hàm split tách chuỗi thành những phần tử con dựa vào " " (khoảng trắng) trong chuỗi st
sophantu = UBound(tohop)   '
hàm UBound lấy số lượng phần tử có trong mảng tohop 
vậy sẽ đơn giản và gọn hơn
Thân!
ღღღღღTài sản của bomnhauag (View All Items) ღღღღღ
Reply
Những người đã cảm ơn Truong Van Truong


Có thể liên quan đến chủ đề
Chủ đề: Tác giả Trả lời: Xem: Bài mới nhất
Question [Help] Cần giúp đỡ tạo query lấy giá trị của dòng liền trước để tính giá trị trung bình luonguct 4 89 23-11-16, 12:33 AM
Bài mới nhất: luonguct
  [Hỏi] cách lọc giá trị trên 2 trường khác nhau? hoanghai902 1 70 18-11-16, 09:27 AM
Bài mới nhất: vulhu06
  [Hỏi] Sự khác nhau của Like và "=" trong các hàm D toancvp 6 204 10-11-16, 12:01 AM
Bài mới nhất: toancvp
  [Hỏi] Cách lọc chuỗi trong query không cần theo thứ tự. toancvp 2 114 29-09-16, 09:18 PM
Bài mới nhất: toancvp
  [Help] giúp loại trùng khi import từ file exel tronghieu9792 2 190 15-05-16, 05:25 PM
Bài mới nhất: tronghieu9792

Chuyển nhanh:


User(s) browsing this thread: 1 Guest(s)
Diễn Đàn Thơ Văn Thi Ẩm Lâu|Nhà Hàng Sông Thơ