Questo sito utilizza cookies solo per scopi di autenticazione sul sito e nient'altro. Nessuna informazione personale viene tracciata. Leggi l'informativa sui cookies.
Username: Password: oppure
Visual Basic 6 - Problema array
Forum - Visual Basic 6 - Problema array

Pagine: [ 1 2 ] Precedente | Prossimo
Avatar
matto00 (Normal User)
Rookie


Messaggi: 41
Iscritto: 10/12/2008

Segnala al moderatore
Postato alle 20:08
Giovedì, 23/04/2009
Ciao a tutti ho ancora una volta bisogno del vostro aiuto.
Nel mio programma ho 2 vettori, il 1° con i nomi il 2° con i punti dei relativi nomi, ora a me servirebbe che ordinasse i punteggi ma spostasse anche l'altro vettore.
Ora vi faccio un esempio.

Vettore1(100,85,75,96)
Vettore2(Luca, Marco, Daniele, Mattia)

Quindi luca ha 100 punti, marco 85 etc io devo riuscire a ordinare il 1° vettore mantenendo il nome corrispondente lo stesso, come posso fare ?

PM Quote
Avatar
theprogrammer (Normal User)
Guru^2


Messaggi: 2509
Iscritto: 28/01/2009

Segnala al moderatore
Postato alle 20:55
Giovedì, 23/04/2009
Puoi usare un vettore di strutture

oppure

durante l'ordinamento del primo vettore (che penso saprai scrivere), ordini anche l'altro.

PM Quote
Avatar
matto00 (Normal User)
Rookie


Messaggi: 41
Iscritto: 10/12/2008

Segnala al moderatore
Postato alle 21:23
Giovedì, 23/04/2009
Si per l'ordinamento ci sono, esattamente cos'è un vettore di strutture ? sono i vettori a + indici ?

PM Quote
Avatar
theprogrammer (Normal User)
Guru^2


Messaggi: 2509
Iscritto: 28/01/2009

Segnala al moderatore
Postato alle 21:34
Giovedì, 23/04/2009
No ...

Conosci una struttura?

Istruzioni

Type
...
End Type

PM Quote
Avatar
matto00 (Normal User)
Rookie


Messaggi: 41
Iscritto: 10/12/2008

Segnala al moderatore
Postato alle 21:35
Giovedì, 23/04/2009
no non so proprio cosa sia

PM Quote
Avatar
theprogrammer (Normal User)
Guru^2


Messaggi: 2509
Iscritto: 28/01/2009

Segnala al moderatore
Postato alle 21:37
Giovedì, 23/04/2009
Allora segui l'altra strada ... modifica il codice in cui ordine il primo vettore, aggiungendo anche il secondo ...

PM Quote
Avatar
matto00 (Normal User)
Rookie


Messaggi: 41
Iscritto: 10/12/2008

Segnala al moderatore
Postato alle 21:42
Giovedì, 23/04/2009
Già che ci sei non è che hai un link per il vettore di struttre cosi mi documento un pò

PM Quote
Avatar
theprogrammer (Normal User)
Guru^2


Messaggi: 2509
Iscritto: 28/01/2009

Segnala al moderatore
Postato alle 21:47
Giovedì, 23/04/2009
Per la struttura

http://msdn.microsoft.com/en-us/library/aa266315(VS.60).aspx

Fatta una, ne puoi fare un vettore ...

PM Quote
Avatar
Louis (Normal User)
Pro


Messaggi: 150
Iscritto: 22/04/2008

Segnala al moderatore
Postato alle 5:12
Domenica, 26/04/2009
Ciao,
non so se hai già risolto, ma considerato che mi sono occupato dell'ordinamento di matrici in un post di poco tempo fa, ti ho predisposto la seguente routine che ordina contemporanenamente i due vettore i cui componenti sono tra loro correlati:

Codice sorgente - presumibilmente VB.NET

  1. Option Explicit
  2. Option Base 1
  3. Dim varNomeAssociato() As Variant
  4. Dim varPuntiAssociato() As Variant
  5. Dim intSub As Integer
  6. '-----------------------------------
  7. Private Sub Command1_Click()
  8.     Call Associazione
  9. End Sub
  10. '-----------------------------------
  11. Private Sub Associazione()
  12.  
  13.     varNomeAssociato = Array("Luca", "Marco", "Daniele", "Mattia", "Giovanni")
  14.     varPuntiAssociato = Array(100, 85, 75, 96, 65)
  15.  
  16. '    For intSub = LBound(varNomeAssociato) To UBound(varNomeAssociato)
  17. '        varNomeAssociato(intSub) = InputBox("Qual'é il nome dell'associato ?")
  18. '        varPuntiAssociato(intSub) = InputBox("Quali sono i suoi punti ?")
  19. '    Next intSub
  20.    
  21.     Call Ordina
  22.  
  23.     ReDim Preserve varNomeAssociato(LBound(varNomeAssociato) To UBound(varNomeAssociato))
  24.     ReDim Preserve varPuntiAssociato(LBound(varPuntiAssociato) To UBound(varPuntiAssociato))
  25.    
  26. End Sub
  27. '-----------------------------------
  28. ' Ordina le due matrici i cui componenti sono correlati:
  29. Private Sub Ordina()
  30.     Dim intMsg As Integer
  31.     Dim i As Integer
  32.     Dim temp As Long, temp2 As String
  33.  
  34. ' Dispone un ordinamento crescente:
  35.     For i = UBound(varPuntiAssociato, 1) To LBound(varPuntiAssociato, 1) Step -1
  36.         For intSub = LBound(varPuntiAssociato, 1) To i - 1
  37.             If varPuntiAssociato(intSub) > varPuntiAssociato(intSub + 1) Then
  38.                 temp = varPuntiAssociato(intSub)
  39.                 temp2 = varNomeAssociato(intSub)
  40.                 varPuntiAssociato(intSub) = varPuntiAssociato(intSub + 1)
  41.                 varNomeAssociato(intSub) = varNomeAssociato(intSub + 1)
  42.                 varPuntiAssociato(intSub + 1) = temp
  43.                 varNomeAssociato(intSub + 1) = temp2
  44.             End If
  45.         Next intSub
  46.     Next i
  47.  
  48. 'Visualizza i dati acquisiti:
  49.     ' Inizializza il primo subscritto:
  50.     intSub = 1
  51.     Do
  52.         intMsg = MsgBox("L'associato" & Space(1) & intSub & " é " & varNomeAssociato(intSub) & _
  53.         Space(1) & " ed i suoi punti sono pari a" & Space(1) & varPuntiAssociato(intSub))
  54.         intSub = intSub + 1
  55.     Loop Until (intSub > 5)
  56.  
  57. End Sub



Non ho idea se la strada suggerita da theprogrammer (vettore di strutture) sia più performante, dato che non l'ho provata (mi riservo comunque di farlo per esperienza personale).
L'ordinamento impostato é cresente (nel tuo esempio da 75 --> 100 punti) e parrebbe funzionare; qualora sia indispensabile l'ordinamento decrescente, prova ad impostare If varPuntiAssociato(intSub) < varPuntiAssociato(intSub + 1) Then .
Ciao   :k:

Ultima modifica effettuata da Louis il 26/04/2009 alle 5:35
PM Quote
Pagine: [ 1 2 ] Precedente | Prossimo