bad_guy Inviato 16 Luglio 2015 Condividi Inviato 16 Luglio 2015 (modificato) Ciao a tutti, ho un problema con la somma dei valori di un vettore effettuata con linguaggio C, questo è il codice: codice: [color=#ffffff][font=verdana]int main(){ int vet[4]; int i=0; int n=0; int somma=0; while(i<5){ printf("inserisci il numero: "); scanf("%i",&n); vet[i]=n; i++; } int a; for (a=0;a<5;a++){ somma=somma+vet[a]; } printf("somma:%i",somma); }[/font][/color] Con il vettore di grandezza 5 ed effettuando esattamente 5 giri, inserendo per esempio 1 a tutti i valori del vettore il risultato è questo: http://www.ipmart-italia.net/attachment.php?attachmentid=538128&d=1437033584 invece se inserisco come grandezza del vettore 6 sempre effettuando 5 giri la somma viene effettuata correttamente. Il codice l'ho compilato usando code blocks 13.12 e come compilatore GNU GCC Compiler. Qualcuno sa spiegarmi dove sta il problema? Grazie mille. Modificato 16 Luglio 2015 da bad_guy Link al commento Condividi su altri siti Altre opzioni di condivisione...
SPIKE666 Inviato 16 Luglio 2015 Condividi Inviato 16 Luglio 2015 Non riesco a vedere il risultato cmq prova a sostituire tutti i "%i " in "%d" e fammi sapere è un po che non lavoro in c Link al commento Condividi su altri siti Altre opzioni di condivisione...
bad_guy Inviato 16 Luglio 2015 Autore Condividi Inviato 16 Luglio 2015 adesso ci provo comunque il risultato era questo: inserisci il numero: 1 inserisci il numero: 1 inserisci il numero: 1 inserisci il numero: 1 inserisci il numero: 1 somma:8 Link al commento Condividi su altri siti Altre opzioni di condivisione...
SPIKE666 Inviato 16 Luglio 2015 Condividi Inviato 16 Luglio 2015 adesso ci provo comunque il risultato era questo: inserisci il numero: 1 inserisci il numero: 1 inserisci il numero: 1 inserisci il numero: 1 inserisci il numero: 1 somma:8 Prova a mettere un printf di ogni valore inserito così da escludere se è un problema a monte o a valle Link al commento Condividi su altri siti Altre opzioni di condivisione...
otterellino Inviato 17 Luglio 2015 Condividi Inviato 17 Luglio 2015 Nella dichiarazione del vettore inizializzi un vettore di 4 caselle, ma poi ne indirizzi 5. Se vuoi un vettore di 5 caselle devi scrivere int vet[5] Con posizioni 0,1,2,3,4. Nel tuo caso la somma è il risultato dell'addizione della posizione 0,1,2,3 + un numero che tu indichi essere nella posizione vet[4] ma che in realtà non esiste e sarà una zona di memoria che contiene un valore completamente a caso Link al commento Condividi su altri siti Altre opzioni di condivisione...
bad_guy Inviato 17 Luglio 2015 Autore Condividi Inviato 17 Luglio 2015 Nella dichiarazione del vettore inizializzi un vettore di 4 caselle, ma poi ne indirizzi 5. Se vuoi un vettore di 5 caselle devi scrivere int vet[5] Con posizioni 0,1,2,3,4. Nel tuo caso la somma è il risultato dell'addizione della posizione 0,1,2,3 + un numero che tu indichi essere nella posizione vet[4] ma che in realtà non esiste e sarà una zona di memoria che contiene un valore completamente a caso hai ragione, mi sono confuso tra la dichiarazione e le posizioni logiche dei vari elementi nel vettore. Grazie mille mi hai aperto gli occhi. Link al commento Condividi su altri siti Altre opzioni di condivisione...
otterellino Inviato 17 Luglio 2015 Condividi Inviato 17 Luglio 2015 Piacere per quel poco che so Link al commento Condividi su altri siti Altre opzioni di condivisione...
Messaggi raccomandati
Crea un account o accedi per lasciare un commento
Devi essere un membro per lasciare un commento
Crea un account
Iscriviti per un nuovo account nella nostra community. È facile!
Registra un nuovo accountAccedi
Sei già registrato? Accedi qui.
Accedi Ora