Questo sito utilizza cookies solo per scopi di autenticazione sul sito e nient'altro. Nessuna informazione personale viene tracciata. Leggi l'informativa sui cookies.
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 ?
Codice sorgente - presumibilmente C++
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);
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
Codice sorgente - presumibilmente C/C++
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 il 04/09/2017 alle 15:26
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 ?
Codice sorgente - presumibilmente C++
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
Codice sorgente - presumibilmente Plain Text
ptr=&total;
a ptr viene assegnato l'indirizzo di una variabile temporanea.
Correggi con
Codice sorgente - presumibilmente Plain Text
*ptr = total;
In questo modo ptr è "de referenziato", quindi in esso è possibile memorizzare li valore di total.
Ultima modifica effettuata da Poggi Marco il 04/09/2017 alle 21:18