Vai al contenuto

Comportamento strano vettore in C


Messaggi raccomandati

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
Link al commento
Condividi su altri siti

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

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

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

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 account

Accedi

Sei già registrato? Accedi qui.

Accedi Ora

Giochi in Uscita



  • Community Hive Community Hive

    Community Hive allows you to follow your favorite communities all in one place.

    Follow on Community Hive
  • Utenti

    Non ci sono membri da mostrare

×
×
  • Crea Nuovo...