• Regolamento Macrocategoria DEV
    Prima di aprire un topic nella Macrocategoria DEV, è bene leggerne il suo regolamento. Sei un'azienda o un hosting/provider? Qui sono anche contenute informazioni per collaborare con Sciax2 ed ottenere l'accredito nella nostra community!

Problema risolto Problema con shift a sinistra/destra c++

Stato
Discussione chiusa ad ulteriori risposte.

domyos

Nuovo utente
Autore del topic
15 Dicembre 2014
11
10
Miglior risposta
0
Salve a tutti,
sto scrivendo un algoritmo che dopo aver chiesto all'utente di inserie 10 numeri che poi saranno memorizzati in un vettore, richiede l'inserimento di una lettera "s" o "d" che provocano rispettivamente lo spostamento a sinistra o a destra.
esempio:
inserendo nel vettore:
1 2 3 4 5 6 7 8 9 10
premendo "s" dovrei ottenere:
2 3 4 5 6 7 8 9 10 1

Il mio problema riguarda lo spostamento a sinistra, che ho fatto in questo modo:


int main() {
int j;
j=vet[0];
for (int i=0; i<N-1; i++){

vet=vet[i+1];
vet[N-1]=j;
}
}

Secondo voi è fatto bene? e in che modo posso mostare a schermo il vettore finale ottenuto con lo spostamento??
 
Salve a tutti,
sto scrivendo un algoritmo che dopo aver chiesto all'utente di inserie 10 numeri che poi saranno memorizzati in un vettore, richiede l'inserimento di una lettera "s" o "d" che provocano rispettivamente lo spostamento a sinistra o a destra.
esempio:
inserendo nel vettore:
1 2 3 4 5 6 7 8 9 10
premendo "s" dovrei ottenere:
2 3 4 5 6 7 8 9 10 1

Il mio problema riguarda lo spostamento a sinistra, che ho fatto in questo modo:


int main() {
int j;
j=vet[0];
for (int i=0; i<N-1; i++){

vet=vet[i+1];
vet[N-1]=j;
}
}

Secondo voi è fatto bene? e in che modo posso mostare a schermo il vettore finale ottenuto con lo spostamento??


no , ci sei andato vicino perché alla fine si ripeterebbe 1 1.
quindi dovevi considerare la settima posizione e settare il suo valore su vet[n-1](10).

basta un ciclo for per mostrare il vettore spostato.
 
Scusami ma non ho capito cosa intenti quando dici: "dovevi considerare la settima posizione e settare il suo valore su vet[n-1](10)".
Potresti rispiegarmelo?
 
Scusami ma non ho capito cosa intenti quando dici: "dovevi considerare la settima posizione e settare il suo valore su vet[n-1](10)".
Potresti rispiegarmelo?

aspetta ti posto prima la soluzione corretta e poi ti spiego :

Codice:
Perfavore, Entra oppure Registrati per vedere i codici!

nel tuo caso spostavi di uno avanti ma durante l'esecuzione del primo ciclo avevi già rimpiazzato il 10 che non esisteva più(cosa che non dovevi fare) . Se proprio volevo fare così ti salvavi in un altra variabile il valore di vet[n-1] e arrivato alla settima posizione eseguivi l'assegnazione ma sostituivi il valore di j con vet[n-1] e riassegnavi successivamente di nuovo il primo elemento, rappresentato da vet stesso.

Comunque a parità di soluzione è più semplice quella che ti ho proposto io , cioè esegui lo shift e l'ultimo elemento poi lo sostituisci con il primo.
 
ah ok, grazie ora mi è tutto più chiaro.-
Per quanto riguarda lo spostamento verso destra è fatto bene il seguente modo?

int j;
int temp=vet[N-1];
for(int j=N-1; j>0; j--){

vet[j]=vet[j-1];

vet[j] = temp;
 
ah ok, grazie ora mi è tutto più chiaro.-
Per quanto riguarda lo spostamento verso destra è fatto bene il seguente modo?

int j;
int temp=vet[N-1];
for(int j=N-1; j>0; j--){

vet[j]=vet[j-1];

vet[j] = temp;

si è scritto bene devi solo levare quella parentesi graffa di fianco al for :soso:
 
di regola sistemando il i-- puoi riuscire a creare un sorting shifatoto a destra
 
Il creatore del topic non ha risposto dal 2015. Evitiamo di fare necroposting. Chiudo e modifico il prefisso.
 
Stato
Discussione chiusa ad ulteriori risposte.