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 - Eliminazione Di Un Elemento Di Un Array
Forum - Visual Basic 6 - Eliminazione Di Un Elemento Di Un Array

Avatar
dimxasinteger (Normal User)
Rookie


Messaggi: 43
Iscritto: 10/11/2007

Segnala al moderatore
Postato alle 1:19
Giovedì, 03/04/2008
Problemino:
ho un array, devo generare una funzione/routine che mi elimini il valore dato dall'utente attraverso inputbox.. ho provato in 2 modi e tutti e 2 mi danno il solito risultato: mi elimina 2 elementi e nella visualizzazione, mi lascia un elemento vuoto nel vettore..:
La mia idea era: se trovo un elemento uguale al num cercato dall'utente,lo svuoto con v(i)="" e poi ogni volta faccio il controllo che v(i) sia diverso dal vuoto e riassegno il valore con v(i)=v(i) non è una logica buona? a quanto pare sembra di no :d.. dunque, vi posto ora i miei 2 tentativi (di suicidio! :) ):
Codice sorgente - presumibilmente Delphi

  1. For i = 1 To n
  2.         If cancellami = v(i) Then
  3.             v(i) = ""
  4.             For j = 1 To n
  5.                 If v(i) <> "" Then
  6.                     v(i) = v(i)
  7.                     n = n - 1
  8.                 End If
  9.             Next j
  10.         End If
  11.     Next i


e il secondo:
Codice sorgente - presumibilmente VB.NET

  1. For i = 1 To n
  2.         If cancellami = v(i) Then
  3.             v(i) = ""
  4.             canx = canx + 1
  5.         End If
  6.         If v(i) <> "" Then
  7.             v(i) = v(i)
  8.         End If
  9.     Next i
  10.     n = n - canx


dove "canx" è il contatore degli eliminati, ricordandovi che ogni volta dopo l'eliminazione dell'elemento, faccio via routine e funzione l'ordinamento e la visualizzazione degli elementi in una listbox.. qualcuno ha un ideuzza per risolvere? grazie 1000! :k:

PM Quote
Avatar
dimxasinteger (Normal User)
Rookie


Messaggi: 43
Iscritto: 10/11/2007

Segnala al moderatore
Postato alle 1:24
Giovedì, 03/04/2008
Il Risultato Della ListBox, Con il vettore V(1,2,3,4,5),eliminando 4 per esempio è:
-1
-2
-3
-
(questi sono gli elementi della listbox ovvero del vettore..)
mi elimina l'ultimo elemento e mi svuota il  penultimo a quanto pare.. pure con il debug di f8 passo passo non ci ho capito niente.. Help 8-|

Ultima modifica effettuata da dimxasinteger il 03/04/2008 alle 1:27
PM Quote
Avatar
gantonio (Normal User)
Guru^2


Messaggi: 1532
Iscritto: 09/09/2007

Segnala al moderatore
Postato alle 16:26
Giovedì, 03/04/2008
Partiamo da un concetto

v(i) = v(i)

e' una istruzione assolutamente inutile.

Specifica meglio il problema ... intanto il vettore e' di tipo stringa o numerico?
E poi che vuol dire "eliminare" un elemento per te? Devi solamente azzerarlo/svuotarlo o eliminare il numero di elementi e scorrere tutto il contenuto successivo ?

PM Quote
Avatar
dimxasinteger (Normal User)
Rookie


Messaggi: 43
Iscritto: 10/11/2007

Segnala al moderatore
Postato alle 0:01
Venerdì, 04/04/2008
we grazie!
mi ci sono 1po ingegnato e ho trovato la soluzione:
Codice sorgente - presumibilmente VB.NET

  1. For i = 1 To n
  2.         If canc = i Then
  3.             vet(i) = vet(n)
  4.             If n <> 1 Then
  5.                 n = n - 1
  6.                 ReDim Preserve vet(1 To n)
  7.                 Else
  8.                 ciao = MsgBox("Il Minimo Di Elementi di Un Vettore E' 1!!", vbExclamation, "Errore Cancellazione")
  9.             End If
  10.         End If
  11.     Next i



cmq intendevo appunto l'eliminazione di un elemento del vettore e quindi lo scorrimento degli elementi successivi con il "restringimento" del vettore stesso di tante posizioni quante sono le cancellazioni. grazie 1000 !:k:

PM Quote
Avatar
P4p3r0g4 (Member)
Guru


Messaggi: 1319
Iscritto: 29/12/2006

Segnala al moderatore
Postato alle 12:12
Venerdì, 04/04/2008
manca il redim finale allora.

PM Quote
Avatar
dimxasinteger (Normal User)
Rookie


Messaggi: 43
Iscritto: 10/11/2007

Segnala al moderatore
Postato alle 12:23
Venerdì, 04/04/2008
si mancava solo quello alla fine, e la logica giusta era:
sostituisco l'ultimo elemento con l'eliminato e ridimensiono il vettore, ordinandolo all'uscita (in un altra routine), ho voluto postare il codice usato per aiutare in futuro chi lo cerca,visto che pure googleando 1 settimana, non ho trovato niente e mi ci so voluto ingegnare e sbatterci il capo :D ho fatto male? :k:

PM Quote