Oppure

Loading
11/11/08 21:29
GrG
Ecco un esempio (nn è il massimo perchè l'ho ftt sul momento quindi ci sn dei difettucci...):
(Inserire in un form una textbox con le 3 coppie come esempio)
Dim coppie() As String, conto As Integer, risultato As String, verifica() As String
Private Sub Command1_Click()
Text1.Text = Replace(Text1.Text, vbCrLf, "-")
coppie = Split(Text1.Text, "-")
Dim x As Integer, y As Integer
conto = 0
For x = 0 To UBound(coppie) - 1
 For y = 0 To UBound(coppie) - 1
  If coppie(x) = coppie(y) Then
  conto = conto + 1
  End If
 Next y
  If conto > 0 Then
  risultato = risultato & conto & "-"
  conto = 0
  End If
Next x
verifica = Split(risultato, "-")
If (verifica(0) <> verifica(1)) Or (verifica(0) <> verifica(2)) Or (verifica(1) <> verifica(2)) Then: Exit Sub
MsgBox "coppia valida"
End Sub


Poi te lo devi un pò aggiustare e adattare alle tue esigenze...

Spero di aver capito ciò che intendi...

:ot: Paperoga quanti anni fai?
aaa
12/11/08 14:38
P4p3r0g4
ne ho appena compiuti (con te) 19.
aaa
12/11/08 15:57
GrG
Postato originariamente da P4p3r0g4:

ne ho appena compiuti (con te) 19.


Azz...Già maggiorenne...Io ne ho fatti 16...:D

Fine :ot:
aaa
12/11/08 16:01
magicolotto
io ho fatto cosi

ho messo in ordine crescente i sei numeri torvati
.....................................
n1,n2,n3,n4,n5,n6
se n1=n2 & n3=n4 & n5=n6 allora
.....................................

e cosi ho risolto

cmq grazieeee
aaa
12/11/08 16:14
P4p3r0g4
cambia il form_load in modo che in var ci finiscano le coppie (var.a il primo numero e in var.b il secondo)


Private Type Coppia
 a As Long
 b As Long
End Type
Private Type tripletta
c1 As Coppia
c2 As Coppia
c3 As Coppia
i1 As Long
i2 As Long
i3 As Long
End Type
Dim sol() As tripletta
Dim val() As Coppia
Dim ind() As New Collection
Dim maxval As Long
Dim k As Long, j As Variant, h As Variant, w1 As Long, W2 As Long, j1 As Variant, h1 As Variant
Private Sub Command1_Click()
For k = 0 To UBound(val)
If val(k).a > maxval Then
maxval = val(k).a
ReDim Preserve ind(0 To maxval)
End If
If val(k).b > maxval Then
maxval = val(k).b
ReDim Preserve ind(0 To maxval)
End If
ind(val(k).a).Add k
ind(val(k).b).Add k
Next k
For k = 0 To maxval
If ind(k).Count > 1 Then
w1 = 0
For Each j In ind(k)
w1 = w1 + 1
W2 = 0
For Each h In ind(k)
W2 = W2 + 1
If W2 > w1 Then
For Each j1 In ind(notval(j, k))
For Each h1 In ind(notval(h, k))
If j1 = h1 Then
ReDim Preserve sol(0 To (UBound(sol) + 1))
sol(UBound(sol)).i1 = j
sol(UBound(sol)).i2 = h
sol(UBound(sol)).i3 = j1
sol(UBound(sol)).c1.a = val(j).a
sol(UBound(sol)).c2.a = val(h).a
sol(UBound(sol)).c3.a = val(j1).a
sol(UBound(sol)).c1.b = val(j).b
sol(UBound(sol)).c2.b = val(h).b
sol(UBound(sol)).c3.b = val(j1).b
End If
Next h1
Next j1
End If
Next h
Next j
End If
Next k
End Sub

Private Sub Form_Load()
ReDim ind(0 To 0)
ReDim sol(0 To 0)
For k = 1 To 300
List1.AddItem Int(Rnd * 80)
List2.AddItem Int(Rnd * 80)
Next k
ReDim val(0 To List1.ListCount)
For k = 0 To List1.ListCount - 1
val(k).a = CLng(List1.List(k))
val(k).b = CLng(List2.List(k))
Next k
End Sub

Private Function notval(index As Variant, exlval As Long) As Long
If val(index).a = exlval Then notval = val(index).b Else notval = val(index).a
End Function
aaa
12/11/08 16:16
P4p3r0g4
ah gia le soluzioni sono in sol(numerosoluzione)
le coppie sono in
sol(numerosoluzione).i1 .i2 e .i3
e i numeri che si ripetono sono in
sol(numerosoluzione).c1.a
sol(numerosoluzione).c1.b
sol(numerosoluzione).c2.a
sol(numerosoluzione).c2.b
sol(numerosoluzione).c3.a
sol(numerosoluzione).c3.b

non ho fatto il controllo di doppioni
a me ci mette meno di un secondo ad eseguire il tutto ma il tempo e` alquanto variabile.
nel peggiore dei casi diventi un problema irrisolvibile (nello specifico NON mettere tutti i valori uguali, sarebbe un suicidio computazionale)
Ultima modifica effettuata da P4p3r0g4 12/11/08 16:21
aaa
12/11/08 16:21
magicolotto
Postato originariamente da P4p3r0g4:

cambia il form_load in modo che in var ci finiscano le coppie (var.a il primo numero e in var.b il secondo)


Private Type Coppia
 a As Long
 b As Long
End Type
Private Type tripletta
c1 As Coppia
c2 As Coppia
c3 As Coppia
i1 As Long
i2 As Long
i3 As Long
End Type
Dim sol() As tripletta
Dim val() As Coppia
Dim ind() As New Collection
Dim maxval As Long
Dim k As Long, j As Variant, h As Variant, w1 As Long, W2 As Long, j1 As Variant, h1 As Variant
Private Sub Command1_Click()
For k = 0 To UBound(val)
If val(k).a > maxval Then
maxval = val(k).a
ReDim Preserve ind(0 To maxval)
End If
If val(k).b > maxval Then
maxval = val(k).b
ReDim Preserve ind(0 To maxval)
End If
ind(val(k).a).Add k
ind(val(k).b).Add k
Next k
For k = 0 To maxval
If ind(k).Count > 1 Then
w1 = 0
For Each j In ind(k)
w1 = w1 + 1
W2 = 0
For Each h In ind(k)
W2 = W2 + 1
If W2 > w1 Then
For Each j1 In ind(notval(j, k))
For Each h1 In ind(notval(h, k))
If j1 = h1 Then
ReDim Preserve sol(0 To (UBound(sol) + 1))
sol(UBound(sol)).i1 = j
sol(UBound(sol)).i2 = h
sol(UBound(sol)).i3 = j1
sol(UBound(sol)).c1.a = val(j).a
sol(UBound(sol)).c2.a = val(h).a
sol(UBound(sol)).c3.a = val(j1).a
sol(UBound(sol)).c1.b = val(j).b
sol(UBound(sol)).c2.b = val(h).b
sol(UBound(sol)).c3.b = val(j1).b
End If
Next h1
Next j1
End If
Next h
Next j
End If
Next k
End Sub

Private Sub Form_Load()
ReDim ind(0 To 0)
ReDim sol(0 To 0)
For k = 1 To 300
List1.AddItem Int(Rnd * 80)
List2.AddItem Int(Rnd * 80)
Next k
ReDim val(0 To List1.ListCount)
For k = 0 To List1.ListCount - 1
val(k).a = CLng(List1.List(k))
val(k).b = CLng(List2.List(k))
Next k
End Sub

Private Function notval(index As Variant, exlval As Long) As Long
If val(index).a = exlval Then notval = val(index).b Else notval = val(index).a
End Function

io dovrei fare il tutto con i sei numeri trovati :

num(1) = CInt(MSHFlexGrid1.TextMatrix(row1, col1)) 
                         num(2) = CInt(MSHFlexGrid1.TextMatrix(row2, col2)) 
                         num(3) = CInt(MSHFlexGrid1.TextMatrix(row3, col3)) 
                         num(4) = CInt(MSHFlexGrid1.TextMatrix(row3, col4)) 
                         num(5) = CInt(MSHFlexGrid1.TextMatrix(row4, col5)) 
                         num(6) = CInt(MSHFlexGrid1.TextMatrix(row4, col6)) 

quindi come dovrei???
aaa
12/11/08 22:14
P4p3r0g4
no quello che ti ho postato io e` il metodo di ricerca dei casi che mi hai descritto.
gli dai come input i valori e ti restituisce gli indici e i valori dei risultati trovati
aaa