|
|||||||
|
|
|
![]() |
|
|
Strumenti |
|
|
#1 |
|
Senior Member
Iscritto dal: Dec 2007
Città: Napoli
Messaggi: 392
|
[VB.NET] Confronto per calendario calcio
Ciao, ho un database in access con i seguenti campi: squadra1, squadra2, giornata.
Non riesco a capire come devo fare per creare le giornate; ad esempio ho tre squadre (ABC) devo dirgli che di scrivere nel database AB,AC,BC (BA,CA,CB sono la stessa cosa) ma non riesco a capire come fare! Qualcuno mi aiuti plz! |
|
|
|
|
|
#2 |
|
Member
Iscritto dal: Nov 2007
Città: Bologna
Messaggi: 242
|
ehm....ma le squadre da dove le prendi?
e che valore vuoi che abbia il campo Giornata? Deve essere una semplice somma del valore squadra1 + vs + squadra2 ad esempio? |
|
|
|
|
|
#3 | |
|
Senior Member
Iscritto dal: Dec 2007
Città: Napoli
Messaggi: 392
|
Quote:
Ultima modifica di Fabio7586 : 11-11-2009 alle 20:01. |
|
|
|
|
|
|
#4 | |
|
Senior Member
Iscritto dal: Dec 2004
Messaggi: 3210
|
Quote:
Questa mia Function lo fa, a te il piacere di modificarla per il tuo scopo : Codice:
Public Function CombinazioniSemplici(ByVal arrayElementi() As String, ByVal dimensioneGruppo As Byte) As List(Of String)
Dim LC As New List(Of String)
If arrayElementi.Count = 0 Then Return LC
If dimensioneGruppo = 0 Or dimensioneGruppo > arrayElementi.Count Then Return LC
Dim aP(dimensioneGruppo - 1) As Integer
For i As Integer = 0 To aP.Count - 1
aP(i) = i
Next
Dim C As String = ""
Do
C = ""
For i As Integer = 0 To aP.Count - 1
C = C & arrayElementi(aP(i))
Next
LC.Add(C)
Dim cnt As Integer = 0
For i As Integer = aP.Count - 1 To 0 Step -1
If aP(i) = arrayElementi.Count - 1 - cnt Then
cnt += 1
If cnt = aP.Count Then Exit Do
Else
aP(i) += 1
For j = 0 To aP.Count - 1
If i < j Then aP(j) = aP(i) + (j - i)
Next
Exit For
End If
Next
Loop
Return LC
End Function
|
|
|
|
|
|
|
#5 | |
|
Senior Member
Iscritto dal: Dec 2007
Città: Napoli
Messaggi: 392
|
Quote:
cosa devo sostituire all'interno del codice affinche mi crei le coppie e le scriva nel database? Quello che ho capito, è che si fanno scorrere i due indici(i,j) all'interno della matrice (solo questo ho capito) mi aiuteresti ancora? Ultima modifica di Fabio7586 : 13-11-2009 alle 00:12. |
|
|
|
|
|
|
#6 |
|
Senior Member
Iscritto dal: Dec 2004
Messaggi: 3210
|
Se vuoi tutte le partite possibili con N squadre, basta creare anzitutto una semplice classe "partita" :
Codice:
Public Class partita
Public squadra1 As String
Public squadra2 As String
End Class
Codice:
Public Function CombinazioniSempliciPartite(ByVal arraySquadre() As String) As List(Of partita)
Dim LC As New List(Of partita)
If arraySquadre.Count = 0 Then Return LC
Dim aP() As Integer = {0, 1}
Do
Dim P As New partita
P.squadra1 = arraySquadre(aP(0))
P.squadra2 = arraySquadre(aP(1))
LC.Add(P)
Dim cnt As Integer = 0
For i As Integer = aP.Count - 1 To 0 Step -1
If aP(i) = arraySquadre.Count - 1 - cnt Then
cnt += 1
If cnt = aP.Count Then Exit Do
Else
aP(i) += 1
For j = 0 To aP.Count - 1
If i < j Then aP(j) = aP(i) + (j - i)
Next
Exit For
End If
Next
Loop
Return LC
End Function
|
|
|
|
|
|
#7 | |
|
Senior Member
Iscritto dal: Dec 2007
Città: Napoli
Messaggi: 392
|
Quote:
Ultima modifica di Fabio7586 : 13-11-2009 alle 11:28. |
|
|
|
|
|
|
#8 | |
|
Senior Member
Iscritto dal: Dec 2004
Messaggi: 3210
|
Quote:
Comunque sia, è semplicissimo. Se ad esempio voglio ricevere tutti gli incontri possibili, senza ripetizioni, su N squadre e immettere le partite in una ListBox di debug : Codice:
Dim N() As String = {"Roma", "Milan", "Inter", "Juventus", "Parma"}
Dim partite As List(Of partita) = CombinazioniSempliciPartite(N)
For i As Integer = 0 To partite.Count - 1
ListBox1.Items.Add(partite(i).squadra1 & " Vs " & partite(i).squadra2)
Next
|
|
|
|
|
|
|
#9 |
|
Senior Member
Iscritto dal: Dec 2007
Città: Napoli
Messaggi: 392
|
Grazie mille! intendevo dire che gli array non li uso da tanto tempo, anche perchè non ho continuato gli studi in questo tipo di campo e non vi lavoro nemmeno!
Ho un errore: nullreference exception non è stata gestita Riferimento a un oggetto non impostato su un'istanza di oggetto. n() non l'ho dichiarat con valori statici, ma volevo che ogni volta facesse il controllo delle textbox se erano piene od erano vuote così da non generare errori nell'allocazione dei valori nell'array Codice:
Dim N() As String
For i = 0 To Nuovocam.nsquad - 1
If i = 0 Then
N(i) = Nuovocam.TextBox1.Text
End If
If i = 1 Then
N(i) = Nuovocam.TextBox2.Text
End If
If i = 2 And Nuovocam.TextBox3.Text <> "" Then
N(i) = Nuovocam.TextBox3.Text
End If
If i = 3 And Nuovocam.TextBox4.Text <> "" Then
N(i) = Nuovocam.TextBox4.Text
End If
If i = 4 And Nuovocam.TextBox5.Text <> "" Then
N(i) = Nuovocam.TextBox5.Text
End If
Next
|
|
|
|
|
|
#10 | |
|
Senior Member
Iscritto dal: Dec 2004
Messaggi: 3210
|
Quote:
A questo punto, se è previsto che qualche TextBox possa essere vuota, procedi così : 1. Individua tutte le textbox sulla Form destinate a contenere il nome di una squadra, e nella proprietà Tag inserisci squadra. 2. Modifichiamo il metodo CombinazioniSempliciPartite in modo che riceva in input un parametro di tipo List(Of String) : Codice:
Public Function CombinazioniSempliciPartite(ByVal squadre As List(Of String)) As List(Of partita)
Dim LC As New List(Of partita)
If squadre.Count = 0 Then Return LC
Dim aP() As Integer = {0, 1}
Do
Dim P As New partita
P.squadra1 = squadre(aP(0))
P.squadra2 = squadre(aP(1))
LC.Add(P)
Dim cnt As Integer = 0
For i As Integer = aP.Count - 1 To 0 Step -1
If aP(i) = squadre.Count - 1 - cnt Then
cnt += 1
If cnt = aP.Count Then Exit Do
Else
aP(i) += 1
For j = 0 To aP.Count - 1
If i < j Then aP(j) = aP(i) + (j - i)
Next
Exit For
End If
Next
Loop
Return LC
End Function
Codice:
Dim N As New List(Of String)
For Each C As Control In Me.Controls
If TypeOf C Is TextBox And C.Tag = "squadra" Then
If C.Text <> "" Then N.Add(C.Text)
End If
Next
|
|
|
|
|
|
|
#11 |
|
Senior Member
Iscritto dal: Dec 2007
Città: Napoli
Messaggi: 392
|
Grazie ancora! é stupendo imparare vb.net, si possono fare milioni di cose in poche righe di codice
|
|
|
|
|
| Strumenti | |
|
|
Tutti gli orari sono GMT +1. Ora sono le: 16:46.




















