C++ inserimento di un valore in un array
qualcuno può aiutarmi a scrivere questo codice?come faccio? supponendo ke l'array sia già ordinato! plz fatemi sapere
Risposte
potresti essere piu' chiaro ed esplicito su cosa ti serve?
ciao
ciao
mi servirebbe un algoritmo per inserire un dato valore in un array ordinato. ad esempio avendo un vettore dato da :
1 3 5 6
considerando val = 4
dovrei avere un vettore con 1 3 4 5 6
1 3 5 6
considerando val = 4
dovrei avere un vettore con 1 3 4 5 6
Conoscendo il numero $n$ di elementi dell'array:
for(i=0;array[i]<x;i++); temp=array[++i]; array[i]=x; x=temp; for(++i;i<=n;i++) { temp=array[++i]; array[i]=x; x=temp; }
grazie per l'aiuto ma, provando a compilare non funziona bene!
ho usato la sintassi del C, ma credo che sia uguale.
L'importante comunque è che ne capisca il senso.
L'importante comunque è che ne capisca il senso.
/*semplicemente, fa girare la variabile i, fintanto che non trova l'elemento del vettore maggiore o uguale a x.*/ for(i=0;array[i]<x;i++); /*Trovato il punto in cui inserire il numero, sostituisce tutti i successivi, tenendo in una variabile temporanea il valore da spostare:*/ for(;i<=n;i++) { /*Registra su una variabile temporanea il valore del vettore successivo a quello in cui si era fermato (pre-incrementando la variabile)*/ temp=array[++i]; /*Inserisce nella posizione il valore richiesto.*/ array[i]=x; /*Ora, il nuovo valore da inserire nel prossimo passo */ x=temp; }
Cheguevilla, mi sa che devi scrivere temp=array;, senza ++i.
La sintassi del C funziona su ogni compilatore C/C++, quindi mi viene il dubbio che p4ngm4n non abbia dichiarato le variabili.
La sintassi del C funziona su ogni compilatore C/C++, quindi mi viene il dubbio che p4ngm4n non abbia dichiarato le variabili.
Si a parte un paio di ++i che mi sembrano di troppo il codice di Cheguevilla è ok, basta fare attenzione a distinguere il numero degli elementi dalla dimensione del vettore che deve essere sufficientemente grande da accettare un nuovo inserimento (gli elementi nn inizializzati hanno un valore che dipende dal compilatore...).
Nel caso di vettori dinamici è necessario riallocare l'intero vettore se lo si vuole allungare...
Nel caso di vettori dinamici è necessario riallocare l'intero vettore se lo si vuole allungare...
le variabili le ho dichiarate, il problema era sul ++i.
grazie
grazie
Intendete dire che non prende l'incremento se lo metto all'interno di un vettore?
Dato che la i a quel punto e' la posizione dove si deve inserire l'intero, la incrementa gia' il for; tu cosi' salti un elemento ad ogni ciclo.
Si, hai ragione.
Allora, all'interno del for dovrebbe essere ++i invece di i++, perchè il precedente for si arresta un passo prima.
Oppure, bisogna mettere una condizione <= nel primo for invece che solo <.
Allora, all'interno del for dovrebbe essere ++i invece di i++, perchè il precedente for si arresta un passo prima.
Oppure, bisogna mettere una condizione <= nel primo for invece che solo <.