PDA

Visualizza la versione completa : [c++]tecniche per shiftare un array


cleaner
06-01-2009, 23:10
come da titolo vorrei alcuni chiarimenti sulle tecniche di shifting per quanto riguarda gli array;
innanzitutto cosa si intende esattamente per "shiftare" ? Da quanto ho capito vuol dire letteramente "spostare", quindi di fatto, correggetemi se sbaglio, "eliminerei"(non dalla memoria,[perchè???]) ma semplicemente a video un elemento dell'array..ora mi servirebbero alcuni esempi:

Se avessi il seg. array:


char a[]={5,8,4,2};
for(int i=0;i<=3;i++)
{
//lo shifting lo devo fare qua dentro?, ad esempio lo vorrei fare sul elemento con indice 2
}


quindi deve risultare così la variabile a alla fine: 582

grazie

MrX87
07-01-2009, 03:21
bhè shiftare significa "scalare di posizione" un elemento e di conseguenza anche quelli al suo fiano. esempio:
avendo il vettore di dimensione 5 in questo caso:


1 2 3 4 5
se effettuassimo uno shift verso destra sarebbe:


(1)1 2 3 4
in questo caso poichè il vettore è allocato di 5 elementi, il numero 5 scomparirebbe, e il primo numero risulterebbe duplicato, ma tramite degli accorgimenti si può fare anche:


5 1 2 3 4
se invece il vettore fosse allocato di una dimensione maggiore a 5 allora verrebbero spostati tutti gli elementi.
Però non capisco bene cosa intendi sul fare uno shift sull'elemento di dindice 2? al massimo puoi shiftare tutti gli elementi che stanno dopo l'indice 2! ovvero verrebbe:


1 2 (3) 3 4

spero di essere stato chiaro...se ci sono problemi chiedi

cleaner
07-01-2009, 19:59
ti ringrazio in anticipo per la risposta;)
poi volevo chiederti una cosa:
potresti farmi gli stessi esempi tramite codice?, sia se il vettore fosse allocato con una dimensione pari agli elementi che non.
Ti ringrazio davvero :ciauz:

oregon
08-01-2009, 12:43
Per shiftare elementi di un array puoi usare anche la funzione

memmove

http://www.cplusplus.com/reference/clibrary/cstring/memmove.html

MrX87
08-01-2009, 13:25
potresti farmi gli stessi esempi tramite codice?, sia se il vettore fosse allocato con una dimensione pari agli elementi che non.
guarda potrei farti gli esempi in codice ma non in C++, al massimo in C. comunque prova a guardare la proposta di oregon e prova a implemetare una funzione che fa questo lavoro, se ci sono problemi, posta ancora.
ciao

Loading