Somma double+int non funziona

di il
6 risposte

Somma double+int non funziona

Ciao a tutti, ho creato un programma che inseriti manualmente 3 numeri in un vettore di 3 elementi ne calcola la media. ve lo scrivo

#include<stdio.h>            
int main(){
    
   int voto[2];
   double media=0;
   int i=0;

   for(i=0; i<3;i++)
   {scanf("%d",&voto[i]);}
           
   for(i=0;i<3;i++)
    {media=media+voto[i];} 
   
   media=media/i;   
                     
   printf("la media dello studente risulta: %d",media);         
}
Purtroppo a me sembra corretto, ma mi da come risultato zero...
ho fatto delle prove con dei printf per vedere dove si trova l'errore e ho verificato che il DOUBLE media rimane sempre a zero;
provando a dichiarare la variabile media come INTERO invece il risultato è giusto (ovviamente senza virgola).

non riesco proprio a capire, potete darmi una mano?

6 Risposte

  • Re: Somma double+int non funziona

    int voto[2]; // indici accettati 0 e 1
    .............................
    for(i=0; i<3;i++)
    {scanf("%d",&voto);} // i = 2 vai in crash.

    for(i=0;i<3;i++) // idem sopra
    {media=media+voto;}


    media=media/i;

    printf("la media dello studente risulta: %d",media); //media è double metti %f
    }
  • Re: Somma double+int non funziona

    Ti sbagli, il numero tra parentesi quadre rappresenta l'indice finale del vettore, quindi:

    int voto[2]; // indici accettati 0, 1 e 2

    infatti facendo printf("%d",voto[2]); mi stampa l'ultimo voto che ho inserito.

    comunque ti ringrazio, grazie a te ho trovato l'errore, che risiedeva nella formattazione del printf:
    infatti mettendo %f mi stampa il double correttamente.

    Grazie a skynet, per me potete chiudere
  • Re: Somma double+int non funziona

    bhugbl ha scritto:


    Ti sbagli, il numero tra parentesi quadre rappresenta l'indice finale del vettore, quindi:

    int voto[2]; // indici accettati 0, 1 e 2

    infatti facendo printf("%d",voto[2]); mi stampa l'ultimo voto che ho inserito.
    Grazie a skynet, per me potete chiudere
    NO. TI SBAGLI TU.
    Se la dimensione dell'array è n, gli indici vanno da 0 a n-1, quindi nel tuo esempio da 0 a 2-1 quindi 1.

    Il fatto che ti stampa l'ultimo voto ti può funzionare 1 milione di volte ma la volta successiva ti va in crash. Non è un problema del compilatore se il programmatore scrive codice errato.

    http://stackoverflow.com/questions/1239938/c-accesses-an-array-out-of-bounds-gives-no-error-why
  • Re: Somma double+int non funziona

    Ehi datti una calmata.
    Se vuoi fare delle considerazioni le fai con il dovuto tono, non credo che i moderatori tollerino flame, troll o cose simili.



    Comunque ho ricontrollato e, anche se il programma funziona lo stesso, quello dichiarato tra parentesi quadrate è effettivamente la dimensione dell'array, non l'ultimo indice.
  • Re: Somma double+int non funziona

    Sto solo cercando di farti scrivere codice migliore e di capire dove sbagli che c'entra essere moderatore o non. In C++ il programma funziona lo stesso non è permesso. Se poi ti vuoi scaldare, è un altra questione ma i toni erano normali credimi. Non voglio fare il sappientone perche non lo sono, quindi amici come prima.
  • Re: Somma double+int non funziona

    Un po' di umiltà ragazzi...
    se una risposta sembra errata si può facilmente trovare riscontro cercando ulteriori notizie per poi discernere con consapevolezza.

    Max
Devi accedere o registrarti per scrivere nel forum
6 risposte