Benvenuto in Moddingstudio.com.

  1. #1
    bad_guy è offline
    • Registrato da Jul 2013
    • Messaggi: 22
    • Ha ringraziato: 0
      Grazie ricevuti: 0

    Comportamento strano vettore in C

    Ciao a tutti, ho un problema con la somma dei valori di un vettore effettuata con linguaggio C, questo è il codice:
    codice:
    Codice:
    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);
    }


    Con il vettore di grandezza 5 ed effettuando esattamente 5 giri, inserendo per esempio 1 a tutti i valori del vettore il risultato è questo:



    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.
    Ultima modifica di bad_guy; 16-07-2015 alle 22:49

  2. # ADS
    Circuit advertisement


     

  3. #2
    SPIKE666 è offline
    • Registrato da Dec 2009
    • Messaggi: 199
    • Ha ringraziato: 0
      Grazie ricevuti: 0

    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

  4. #3
    bad_guy è offline
    • Registrato da Jul 2013
    • Messaggi: 22
    • Ha ringraziato: 0
      Grazie ricevuti: 0

    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

  5. #4
    SPIKE666 è offline
    • Registrato da Dec 2009
    • Messaggi: 199
    • Ha ringraziato: 0
      Grazie ricevuti: 0

    Citazione Originariamente Scritto da bad_guy Visualizza Messaggio
    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

  6. #5
    Moderatoreotterellino è offline
    • Registrato da Jan 2012
    • Messaggi: 336
    • Ha ringraziato: 3
      Grazie ricevuti: 0

    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

  7. #6
    bad_guy è offline
    • Registrato da Jul 2013
    • Messaggi: 22
    • Ha ringraziato: 0
      Grazie ricevuti: 0

    Citazione Originariamente Scritto da otterellino Visualizza Messaggio
    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.

  8. #7
    Moderatoreotterellino è offline
    • Registrato da Jan 2012
    • Messaggi: 336
    • Ha ringraziato: 3
      Grazie ricevuti: 0

    Piacere per quel poco che so

Tag per Questa Discussione

Permessi di Scrittura

  • Tu non puoi inviare nuove discussioni
  • Tu non puoi inviare risposte
  • Tu non puoi inviare allegati
  • Tu non puoi modificare i tuoi messaggi
  •  
Torna a inizio pagina
Moddingstudio.com - Powered by vBulletin
Copyright (c) 2011 vBulletin Solutions, Inc. All rights reserved.
Brown Editore S.r.l. - Capitale Sociale 1.087.500€ I.V. - P.Iva: 12899320159 - Viale Sarca, 336 Edificio 16 - 20126 Milano
Tutti gli orari sono GMT +1. Adesso sono le 21:16.