Oppure

Loading
04/09/17 12:36
AmedeoF
Salve ragazzi, come vi dicevo già dal titolo dovrei calcolare la somma e poi la media dei voti inseriti dall'utente utilizzando due funzioni differenti! Ora per far inserire i voti e calcolarne la somma il problema non c'è! Il problema sorge invece nella funzione "Media", che vedete, che dovrebbe calcolarmi per l'appunto la media dei voti inseriti! Ho provato a passare per valore la variabile " total" ed entrambe le funzioni ma qst metodo nemmeno funzionava! Così ho pensato ai puntatori ma mi sono un pò incartato e vorrei sapere cosa dovrei aggiustare nella parte di "Media" per far funzionare bene il programma...in sostanza quali sono gli errori che commetto ?


void AddGrades( int*ptr ){
   int i,grade[4];
 int total=0;

for(i=0;i<4;i++){
      printf("Inserisci voto num[%d]: ",i+1);
   scanf("%d",&grade[i]);
   }
   for(i=0;i<4;i++){
      total+=grade[i];
   }
   ptr=&total;
printf("\nIl totale dei voti inseriti e': %d",total);

return ;
}   

void Media( int *ptr){
   int media;

   media=(*ptr/4);
   printf("\nLa media dei voti vale: %d",media);
   return;
}
aaa
04/09/17 13:12
TheDarkJuster
Fammi vedere il main.
aaa
04/09/17 13:24
Mikelius
In primis, ti consiglio di idendate bene il codice, ma sopratutto usare nomi migliori..
Chiamare la funzione e la variabile in essa con lo stesso nome ("media";) potrebbe portare a malintesi.
Comunque

1) Nella prima funzione puoi tranquillamente evitare il 2° for e mettere tutto nel primo.
2) Che ti serve modificare il valore della somma nella seconda funzione? Non serve, quindi puoi tranquillamente evitare il puntatore... Potresti anche evitarlo nella 1° modificando la funzione con
int AddGrades();
{
    return somma;
}


Il problema sarà nel main(), nel modo in cui passi il valore che andrà su (*ptr).
Ultima modifica effettuata da Mikelius 04/09/17 13:26
aaa
04/09/17 19:03
Poggi Marco
Postato originariamente da AmedeoF:

Salve ragazzi, come vi dicevo già dal titolo dovrei calcolare la somma e poi la media dei voti inseriti dall'utente utilizzando due funzioni differenti! Ora per far inserire i voti e calcolarne la somma il problema non c'è! Il problema sorge invece nella funzione "Media", che vedete, che dovrebbe calcolarmi per l'appunto la media dei voti inseriti! Ho provato a passare per valore la variabile " total" ed entrambe le funzioni ma qst metodo nemmeno funzionava! Così ho pensato ai puntatori ma mi sono un pò incartato e vorrei sapere cosa dovrei aggiustare nella parte di "Media" per far funzionare bene il programma...in sostanza quali sono gli errori che commetto ?


void AddGrades( int*ptr ){
   int i,grade[4];
 int total=0;

for(i=0;i<4;i++){
      printf("Inserisci voto num[%d]: ",i+1);
   scanf("%d",&grade[i]);
   }
   for(i=0;i<4;i++){
      total+=grade[i];
   }
   ptr=&total;
printf("\nIl totale dei voti inseriti e': %d",total);

return ;
}   

void Media( int *ptr){
   int media;

   media=(*ptr/4);
   printf("\nLa media dei voti vale: %d",media);
   return;
}
Ciao! Ho letto il programma, e ho trovato un errore nella funzione void AddGrades ( int *ptr ).
Infatti nell'istruzione
ptr=&total;
a ptr viene assegnato l'indirizzo di una variabile temporanea.
Correggi con
*ptr = total;
In questo modo ptr è "de referenziato", quindi in esso è possibile memorizzare li valore di total.
Ultima modifica effettuata da Poggi Marco 04/09/17 19:18
aaa