Newsgroup: it.comp.lang.visual-basic
Titolo: Array da riordinare

Salve,
ho un array A(i) con i = 0.......6, supponiamo:
A(0) = 2
A(1) = 0
A(2) = 0
A(3) = 1
A(4) = 0
A(5) = 3
A(6) = 1
Avei bosogno di fare in modo che alla fine il mio array sia:
A(0) = 2
A(1) = 1
A(2) = 3
A(3) = 1
A(4) = 0
A(5) = 0
A(6) = 0
L'esigenza è quella di non creare un nuovo array e assegnargli i valori non
nulli di A(), ma di avere proprio A() modificato.
Grazie.
Gregor.

 Chi è Gregor ?

Se lo ordini in modo decrescente ottieni proprio i valori uguali a 0 nelle ultime
posizioni dell'array.
Per ordinare un array cerca un algoritmo tra Quicksort, MergeSort, BubbleSort sul sito
comune o sui vecchi post del NG (inutile dirti che il migliore e' il QuickSort).
Come risolvere un problema? Dove trovare informazioni?
1) Per prima cosa consultate la guida in linea.
*  Premere il tasto [F1] in alto a sinistra sulla vostra tastiera.
2) Seconda fonte di informazione: l'MSDN online.
*  
http://msdn.microsoft.com/vbasic/
3) Terza fonte di informazione: cercate tra i vecchi post di questo
newsgroup: quasi tutti i temi sono stati già ampiamente trattati e risolti.
*  
http://groups.google.com/groups?group=it.comp.lang.visual-basic
4) Quarta fonte di informazione: il Sito Comune(SC) di questo NewsGroup.
*  
http://www.it-lang-vb.net/
5) Quinta fonte di informazione: cercate tra i sorgenti già scritti e pronti che al 99%
risolvono quello su cui state lavorando e con minime modifiche.
*  
http://www.it-lang-vb.net/
  (Sezione sorgenti)
*  
http://www.planet-source-code.com/vb/
6) Per ultima, se non avete ancora trovato nulla: chiedete al newsgroup.
*  Ricordatevi di leggere il Manifesto di questo Gruppo di Discussione:
 
http://www.it-lang-vb.net/docs/Manifesto.txt
--- Links per approfondire... -------------------------------------------
Sommario:
¯¯¯¯¯¯¯¯
[API]
[SOCKET]
[DATABASE]
Contenuto:
¯¯¯¯¯¯¯¯¯
[API]
*  
http://www.allapi.net/
[SOCKET]
*  
http://www.vbip.com
*  
http://www.socketwrench.com
[DATABASE]
*  
http://www.microsoft.com/data/download.htm

 wrote in message
news:9sov63$o2f$1...@fe1.cs.interbusiness.it...

Come che logica!
Mi sembra chiaro: gli zeri devono posizionarsi nelle ultime posizioni.
Può andare bene anche non in questo ordine, proverò a riordinare.
Gregor.

 Chi è Gregor ?

 
Se devi solo spostare gli zeri in fondo ma non ti interessa mantenere
l'ordine degli altri elementi, questo č il modo piů veloce.
Dim I As Long, J As Long
I = LBound(A)
J = UBound(A)
Do Until A(I) = 0 Or I = UBound(A): I = I + 1: Loop 'Cerco il primo = 0
Do Until A(J) <> 0 Or J = LBound(A): J = J - 1: Loop 'Cerco l'ultimo <> 0
Do While I < J
   A(I) = A(J): A(J) = 0 'Li scambio
   Do Until A(I) = 0 Or I = UBound(A): I = I + 1: Loop 'Cerco il primo = 0
   Do Until A(J) <> 0 Or J = LBound(A): J = J - 1: Loop 'Cerco l'ultimo <> 0
Loop
Se invece devi mantenere l'ordine fai cosě.
Dim I As Long, J As Long
I = LBound(A)
Do Until A(I) = 0 Or I = UBound(A): I = I + 1: Loop 'Cerco il primo = 0
If I < UBound(A) Then
   J = I + 1
   Do Until A(J) <> 0 Or J = UBound(A): J = J + 1: Loop 'Cerco, dopo questo, il primo <> 0
   Do While J <= UBound(A)
      A(I) = A(J): A(J) = 0 'Li scambio
      I = I + 1: J = J + 1
      If J <= UBound(A) Then
         Do Until A(J) <> 0 Or J = UBound(A): J = J + 1: Loop 'Cerco, dopo questo, il primo <> 0
      End If
   Loop
End If
-- 
Samuele Battarra
prova il mio newsreader:
http://digilander.iol.it/battarsa/programmi/news/

 l'ordine degli altri elementi, questo č il modo piů veloce.
[cut]
Grazie per l'esauriente spiegazione!
Gregor.