Questo sito utilizza cookies solo per scopi di autenticazione sul sito e nient'altro. Nessuna informazione personale viene tracciata. Leggi l'informativa sui cookies.
Username: Password: oppure
C/C++ - Calcolare somma e media voti con due funzioni diverse
Forum - C/C++ - Calcolare somma e media voti con due funzioni diverse

Avatar
AmedeoF (Normal User)
Newbie


Messaggi: 1
Iscritto: 04/09/2017

Segnala al moderatore
Postato alle 14:36
Lunedì, 04/09/2017
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++

  1. void AddGrades( int*ptr ){
  2.    int i,grade[4];
  3.  int total=0;
  4.  
  5. for(i=0;i<4;i++){
  6.       printf("Inserisci voto num[%d]: ",i+1);
  7.    scanf("%d",&grade[i]);
  8.    }
  9.    for(i=0;i<4;i++){
  10.       total+=grade[i];
  11.    }
  12.    ptr=&total;
  13. printf("\nIl totale dei voti inseriti e': %d",total);
  14.  
  15. return ;
  16. }  
  17.  
  18. void Media( int *ptr){
  19.    int media;
  20.  
  21.    media=(*ptr/4);
  22.    printf("\nLa media dei voti vale: %d",media);
  23.    return;
  24. }


PM Quote
Avatar
TheDarkJuster (Member)
Guru^2


Messaggi: 1620
Iscritto: 27/09/2013

Segnala al moderatore
Postato alle 15:12
Lunedì, 04/09/2017
Fammi vedere il main.

PM Quote
Avatar
Mikelius (Member)
Expert


Messaggi: 525
Iscritto: 14/04/2017

Segnala al moderatore
Postato alle 15:24
Lunedì, 04/09/2017
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++

  1. int AddGrades();
  2. {
  3.     return somma;
  4. }



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
PM Quote
Avatar
Poggi Marco (Member)
Guru


Messaggi: 969
Iscritto: 05/01/2010

Segnala al moderatore
Postato alle 21:03
Lunedì, 04/09/2017
Testo quotato

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 ?

Codice sorgente - presumibilmente C++

  1. void AddGrades( int*ptr ){
  2.    int i,grade[4];
  3.  int total=0;
  4.  
  5. for(i=0;i<4;i++){
  6.       printf("Inserisci voto num[%d]: ",i+1);
  7.    scanf("%d",&grade[i]);
  8.    }
  9.    for(i=0;i<4;i++){
  10.       total+=grade[i];
  11.    }
  12.    ptr=&total;
  13. printf("\nIl totale dei voti inseriti e': %d",total);
  14.  
  15. return ;
  16. }  
  17.  
  18. void Media( int *ptr){
  19.    int media;
  20.  
  21.    media=(*ptr/4);
  22.    printf("\nLa media dei voti vale: %d",media);
  23.    return;
  24. }


Ciao! Ho letto il programma, e ho trovato un errore nella funzione   void AddGrades ( int *ptr ).
Infatti nell'istruzione
Codice sorgente - presumibilmente Plain Text

  1. ptr=&total;

a ptr viene assegnato l'indirizzo di una variabile temporanea.
Correggi con
Codice sorgente - presumibilmente Plain Text

  1. *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
PM Quote