mariposastar (Normal User)
Newbie
Messaggi: 11
Iscritto: 18/06/2012
|
Ciao a tutti,
innanzitutto mi scuso se la domanda vi risulterà troppo semplice o addirittura banale ma volevo sapere:
Se ho un vettore di 100 elementi e poi mi chiede di inserire un elemento in posizione i e di scalare tutti gli altri come fareste?
Grazie per l'aiuto
|
|
nessuno (Normal User)
Guru^2
Messaggi: 6380
Iscritto: 03/01/2010
|
Con un semplice ciclo for ...
Ricorda che nessuno è obbligato a risponderti e che nessuno è perfetto ...
---
Il grande studioso italiano Bruno de Finetti (uno dei padri fondatori del moderno Calcolo delle probabilità) chiamava il gioco del Lotto Tassa sulla stupidità. |
|
mariposastar (Normal User)
Newbie
Messaggi: 11
Iscritto: 18/06/2012
|
Avevo iniziato a scrivere qualcosa devo fare due cicli uno per copiare gli elementi fino ad i,poi devo aggiungere il valore in posizione i e successivamente copiare i restanti elementi di V in un vettore W di 101 elementi giusto?
|
|
nessuno (Normal User)
Guru^2
Messaggi: 6380
Iscritto: 03/01/2010
|
Per fare quello che hai detto non servono due cicli ma solo uno
Se l'elemento da inserire non è l'ultimo allora utilizzi il ciclo per spostare in giù tutti gli elementi prima dell'i-esimo e poi inserisci il nuovo valore.
Se scrivi del codice ci ragioniamo
Ricorda che nessuno è obbligato a risponderti e che nessuno è perfetto ...
---
Il grande studioso italiano Bruno de Finetti (uno dei padri fondatori del moderno Calcolo delle probabilità) chiamava il gioco del Lotto Tassa sulla stupidità. |
|
mariposastar (Normal User)
Newbie
Messaggi: 11
Iscritto: 18/06/2012
|
Ci saranno di sicuro tantissimi errori sono una principiante
Codice sorgente - presumibilmente C++ |
void aggiungi_el (int V[],int W[],int N,int *pos, int *a) int i,j=0; for (i=0,i< *pos,i++) { W[j]=V[i]; j++; } W[*pos]=*a; j++; for (i=*pos,i< N,i++) for (j=j, j<N+1,j++) { W[j]=V[i]; }
|
Ultima modifica effettuata da HeDo il 13/07/2012 alle 10:16 |
|
nessuno (Normal User)
Guru^2
Messaggi: 6380
Iscritto: 03/01/2010
|
Il prototipo è indicato dall'esercizio? Perché passi pos e a per puntatore?
P.S. Usa i tag CODE per il codice oppure usa l'indice k al posto di i
Ricorda che nessuno è obbligato a risponderti e che nessuno è perfetto ...
---
Il grande studioso italiano Bruno de Finetti (uno dei padri fondatori del moderno Calcolo delle probabilità) chiamava il gioco del Lotto Tassa sulla stupidità. |
|
mariposastar (Normal User)
Newbie
Messaggi: 11
Iscritto: 18/06/2012
|
No l'ho inventato io... ho pensato di mettere i puntatori in modo che magari con altre funzioni inserisco la posizione in cui voglio inserire il nuovo elemento a...è sbagliato? oppure potrei togliere il puntatore e inserire nella stessa funzione un input per pos e a...
|
|
nessuno (Normal User)
Guru^2
Messaggi: 6380
Iscritto: 03/01/2010
|
Allora direi che basta qualcosa di simile
Codice sorgente - presumibilmente C++ |
void aggiungi_el (int V[], int N, int pos, int a) { int k; if(pos<N-1) for(k=N-2; k>=pos; k--) V[k+1]=V[k]; V[pos]=a; }
|
Ricorda che nessuno è obbligato a risponderti e che nessuno è perfetto ...
---
Il grande studioso italiano Bruno de Finetti (uno dei padri fondatori del moderno Calcolo delle probabilità) chiamava il gioco del Lotto Tassa sulla stupidità. |
|
mariposastar (Normal User)
Newbie
Messaggi: 11
Iscritto: 18/06/2012
|
Ma facendo tutto su un unico vettore andresti a perdere l'ultimo elemento....il vettore originario è di 100 elementi,aggiungendo un elemento in posizione i diventerebbe di 101 elementi...se facessi come hai scritto tu metterei in posizione i il valore,scalerei tutti gli altri ma il "vecchio" valore che si trovava in posizione 99 andrebbe perso...per questo io facevo due vettori ed il secondo di 101...Non so se mi sono espressa bene
|
|