|
|
|
![]() |
|
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 19: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 : 12-11-2009 alle 23: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 10: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: 10:53.