Vai al contenuto
Inviato

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 da bad_guy

Featured Replies

Inviato
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
Inviato
  • Autore

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

Inviato
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

Inviato

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

Inviato
  • Autore
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.

Inviato
Piacere per quel poco che so :D

Crea un account o accedi per lasciare un commento