Cancellazione elementi Array in C
- franzolo
- Scoppiettante Seguace

- Messaggi: 365
- Iscrizione: martedì 20 febbraio 2007, 14:34
- Località: Domani a casa tua
Cancellazione elementi Array in C
Salve ragazzi, devo svolgere un esercizio in C.
Senza starvi a dire che devo fare, vorrei sapere come si possono cancellare gli elementi di un vettore in C.
L' esercizio lo devo svolgere conoscendo solo funzioni e vettori...quindi niente puntatori, ricorsione etc....
Come posso fare?
Vi ringrazio in anticipo!
So svolgere l' esercizio in un' altra maniera, ma voglio riuscirci anche in questo modo!
Grazie a tutti!
Senza starvi a dire che devo fare, vorrei sapere come si possono cancellare gli elementi di un vettore in C.
L' esercizio lo devo svolgere conoscendo solo funzioni e vettori...quindi niente puntatori, ricorsione etc....
Come posso fare?
Vi ringrazio in anticipo!
So svolgere l' esercizio in un' altra maniera, ma voglio riuscirci anche in questo modo!
Grazie a tutti!
- franzolo
- Scoppiettante Seguace

- Messaggi: 365
- Iscrizione: martedì 20 febbraio 2007, 14:34
- Località: Domani a casa tua
Re: Cancellazione elementi Array in C
L' idea mia principale sarebbe quella di usare una funzione che riceva questo vettore, quindi passarlo per riferimento in modo da modificare il vettore, e poi far ritornare il vettore modificato senza l' elemento che mi serve...
Che ne dite?
Il problema ovviamente è che non so applicare questa cosa!
Che ne dite?
Il problema ovviamente è che non so applicare questa cosa!
Re: Cancellazione elementi Array in C
forse non ho capito bene...
hai detto di lavorare in C, quindi parto dall'idea che per vettore intendi un array(in C++ il vettore è simile ma più potente).
Considera che un array in C è SEMPRE un indirizzo, ti basterà passarlo semplicemente, e alla fine della funzione sarà modificato
hai detto di lavorare in C, quindi parto dall'idea che per vettore intendi un array(in C++ il vettore è simile ma più potente).
Considera che un array in C è SEMPRE un indirizzo, ti basterà passarlo semplicemente, e alla fine della funzione sarà modificato
Navigammo su fragili vascelli
per affrontar del mondo la burrasca
ed avevamo gli occhi troppo belli...
per affrontar del mondo la burrasca
ed avevamo gli occhi troppo belli...
- ryuujin
- Entusiasta Emergente

- Messaggi: 1032
- Iscrizione: venerdì 14 aprile 2006, 2:57
- Sesso: Maschile
- Località: Pescara
- Contatti:
Re: Cancellazione elementi Array in C
cosa intendi per cancellare?thelo ha scritto: forse non ho capito bene...
hai detto di lavorare in C, quindi parto dall'idea che per vettore intendi un array(in C++ il vettore è simile ma più potente).
Considera che un array in C è SEMPRE un indirizzo, ti basterà passarlo semplicemente, e alla fine della funzione sarà modificato
gli elementi di un array in C non possono essere "cancellati", puoi solo modificarne il valore...
r.
http://blog.spicydev.it
"Chi riceve un'idea da me, ricava conoscenza senza diminuire la mia; come chi accende la sua candela con la mia, riceve luce senza lasciarmi
al buio". - Thomas Jefferson
"Chi riceve un'idea da me, ricava conoscenza senza diminuire la mia; come chi accende la sua candela con la mia, riceve luce senza lasciarmi
al buio". - Thomas Jefferson
- franzolo
- Scoppiettante Seguace

- Messaggi: 365
- Iscrizione: martedì 20 febbraio 2007, 14:34
- Località: Domani a casa tua
Re: Cancellazione elementi Array in C
No, ora vi spiego, voglio cancellare un elemento da un array (in C), in modo che per esempio se ho questo array V={1,2,3,4,5}, se devo togliere per esempio il 2, avrò V={1,3,4,5}.
Quindi un array con un elemento in meno, e così via se mi devo togliere un al altro elemento.
Una cosa simile so che si può svolgere con le liste, ma io lo posso fare conoscendo solo funzioni e vettori.
Se siete sicuri che non si possa fare mi metterò l' anima in pace!
Vi ringrazio in anticipo per le vostre risposte!
Quindi un array con un elemento in meno, e così via se mi devo togliere un al altro elemento.
Una cosa simile so che si può svolgere con le liste, ma io lo posso fare conoscendo solo funzioni e vettori.
Se siete sicuri che non si possa fare mi metterò l' anima in pace!
Vi ringrazio in anticipo per le vostre risposte!
Re: Cancellazione elementi Array in C
l'array è il peggior sistema per fare queste cose. E effettivamente per cancellare intendevo "resettarne" il valore.
Devi ricorrere ad una lista tipo
C'è spreco di memoria ma è enormemente più veloce
Devi ricorrere ad una lista tipo
Codice: Seleziona tutto
struct list {
int valore;
struct list *next_p;
struct list *prec_p;
};
Navigammo su fragili vascelli
per affrontar del mondo la burrasca
ed avevamo gli occhi troppo belli...
per affrontar del mondo la burrasca
ed avevamo gli occhi troppo belli...
Re: Cancellazione elementi Array in C
pardon...mi ero già dimenticato del primo post...non vuoi usare puntatori...
L'array deve inizialmente contenere solo VALORE_NULLO.
Non l'ho provata, sicuramente c'è qualche errore
funzione solo per interi positivi, perchè comunque devi rinunciare a un possibile numero che verrà gestito come VALORE_NULLO.
Se non ti va bene, e vuoi che l'array venga ridimensionato è un'altra cosa...che però fa uso di puntatori
(b2b)
Codice: Seleziona tutto
#define VALORE_NULLO -1
elimina(int lista[], int dimensione_array, int valore)
{
int i;
for (i = 0; i < dimensione_array; i++)
if (lista[i] == valore)
{
for (; i < dimensione_array - 1;i++)
lista[i] = lista[i+1];
lista[dimensione_array - 1] = VALORE_NULLO;
i++;
}
}
Non l'ho provata, sicuramente c'è qualche errore
funzione solo per interi positivi, perchè comunque devi rinunciare a un possibile numero che verrà gestito come VALORE_NULLO.
Se non ti va bene, e vuoi che l'array venga ridimensionato è un'altra cosa...che però fa uso di puntatori
(b2b)
Ultima modifica di thelo il mercoledì 10 ottobre 2007, 21:36, modificato 1 volta in totale.
Navigammo su fragili vascelli
per affrontar del mondo la burrasca
ed avevamo gli occhi troppo belli...
per affrontar del mondo la burrasca
ed avevamo gli occhi troppo belli...
-
pegasus_1987
- Scoppiettante Seguace

- Messaggi: 314
- Iscrizione: mercoledì 25 ottobre 2006, 4:40
Re: Cancellazione elementi Array in C
secondo me una idea potrebbe essere di spostare gli elementi successivi a qll k vogliamo cancellare una posizione indietro..e poi dare all'ultimo valore dell'array il valore NULL...così dovrebbe cancellarsi lo spazio in memoria e quindi anke il puntatore all'indirizzo
- ryuujin
- Entusiasta Emergente

- Messaggi: 1032
- Iscrizione: venerdì 14 aprile 2006, 2:57
- Sesso: Maschile
- Località: Pescara
- Contatti:
Re: Cancellazione elementi Array in C
no,non si cancella lo spazio in memoria.pegasus_1987 ha scritto: secondo me una idea potrebbe essere di spostare gli elementi successivi a qll k vogliamo cancellare una posizione indietro..e poi dare all'ultimo valore dell'array il valore NULL...così dovrebbe cancellarsi lo spazio in memoria e quindi anke il puntatore all'indirizzo
Un array viene allocato in memoria e viene liberato solo all'uscita del programma (o all'uscita dal suo scope). Se imposti a NULL il contenuto degli elementi di un array, non liberi spazio in memoria. Quegli elementi continuano ad esistere fisicamente e conterrano il valore NULL.
r.
http://blog.spicydev.it
"Chi riceve un'idea da me, ricava conoscenza senza diminuire la mia; come chi accende la sua candela con la mia, riceve luce senza lasciarmi
al buio". - Thomas Jefferson
"Chi riceve un'idea da me, ricava conoscenza senza diminuire la mia; come chi accende la sua candela con la mia, riceve luce senza lasciarmi
al buio". - Thomas Jefferson
- andyoso
- Scoppiettante Seguace

- Messaggi: 720
- Iscrizione: venerdì 20 luglio 2007, 1:17
- Località: Napoli
Re: Cancellazione elementi Array in C
Hai ragione, ma, almeno per quello che so, non si può cancellare lo spazio in memoria perchè se l'array l'hai inizializzato di lunghezza n questo resterà di questa lunghezza per tutta la durata del programma (correggetemi se sbaglio).no,non si cancella lo spazio in memoria.secondo me una idea potrebbe essere di spostare gli elementi successivi a qll k vogliamo cancellare una posizione indietro..e poi dare all'ultimo valore dell'array il valore NULL...così dovrebbe cancellarsi lo spazio in memoria e quindi anke il puntatore all'indirizzo
Quindi quoto la risposta di pegasus_1987
- franzolo
- Scoppiettante Seguace

- Messaggi: 365
- Iscrizione: martedì 20 febbraio 2007, 14:34
- Località: Domani a casa tua
Re: Cancellazione elementi Array in C
Innanzitutto ringrazio tutti voi per il vostro aiuto!
Fa davvero molto piacere...
Il valore NULL devo far finta di non conoscerlo, anche perchè se non sbaglio si introduce con le liste questo argomento...ora vedo la soluzione proposta da Thelo (che ringrazio ovviamente!)...Ragazzi vi farò sapere!
(b2b)
Fa davvero molto piacere...
Il valore NULL devo far finta di non conoscerlo, anche perchè se non sbaglio si introduce con le liste questo argomento...ora vedo la soluzione proposta da Thelo (che ringrazio ovviamente!)...Ragazzi vi farò sapere!
(b2b)
Chi c’è in linea
Visualizzano questa sezione: 0 utenti iscritti e 3 ospiti