Calcolo media

di il
6 risposte

Calcolo media

Ciao a tutti, ho un problema con il calcolo della media.
Devo creare un programma che generi random 20 voti per 10 studenti e devo stamparne la media (dei voti) per ogni studente.
Il codice che ho creato mi somma tutti i voti di tutti gli studenti, come faccio a sommare i voti di un singolo studente e a calcolarne la media?

Vi allego il mio codice, non voglio la codifica, voglio solamente capire dove sbaglio,grazie.
#include "stdio.h"
#include "stdlib.h"
#include "time.h"
#include "math.h"

#define STUDENTI 10
#define MATERIE 20
#define VOTI 31



int main(void) {

  srand(time(NULL));
  int i;
  int j;
  int matrice[STUDENTI][MATERIE];
  int voto[VOTI];
  int somma=0;
  float media[STUDENTI];

  for(i=0;i<STUDENTI;i++){

    printf("Studente %d:\n",  i);

      for(j=0;j<MATERIE;j++){
    	  voto[i]=rand()%31+1;
       printf("Voto: %d\n",voto[i]);
    }

    somma=somma+voto[i];
    media[i]= (float)somma/MATERIE;
    printf("Media:%.2f\n\n", media[i]);

  }






  system("pause");
  return 0;
}

6 Risposte

  • Re: Calcolo media

    Cambiere il nome delle variabili secondo me può aiutare a capire cosa fare. Ad esempio...

    1. in una classe c'è una certa quantità di studenti
    2. la quantità degli studenti si può fissare in un #define, magari col nome Q_STUDENTI
    3. ad ogni studente della classe viene assegnata una quantità fissa di voti, per cui torna bene un secondo #define Q_VOTI
    4. a questo punto, la matrice possiamo chiamarla "classe", e sarà int classe[Q_STUDENTI][Q_VOTI]
    5. i contatori per scorrere la matrice, per chiarezza, possiamo chiamarli "iSt" per "indice studente" e "iVt" per "indice voto"

    I cicli dovrebbero ora essere più leggibili:
    for( iSt=0; iSt<Q_STUDENTI; iSt++ ) {
        // stampi il numero d'ordine dello studente (iSt+1)
    
        for( somma_voti=0, iVt=0; iVt<Q_VOTI; iVt++ ) {
            // assegni il voto casuale a classe[iSt][iVt]
            // mostri in console il voto appena assegnato
            // aggiungi il voto classe[iSt][iVt] alla somma
        }
    
        // calcoli la media
        // la mostri in console
    }
    Volendo puoi ottenere lo stesso risultato anche senza la matrice, visto che a quanto pare non è richiesta la memorizzazione dei voti.
    for( iSt=0; iSt<Q_STUDENTI; iSt++ ) {
        int vt;
        // stampi il numero d'ordine dello studente (iSt+1)
    
        for( somma_voti=0, iVt=0; iVt<Q_VOTI; iVt++ ) {
            // assegni il voto casuale alla variabile vt
            // mostri in console il voto appena assegnato a vt
            // aggiungi il voto vt alla somma somma_voti
        }
    
        // calcoli la media
        // la mostri in console
    }
  • Re: Calcolo media

    AldoBaldo ha scritto:


    Cambiere il nome delle variabili secondo me può aiutare a capire cosa fare. Ad esempio...

    1. in una classe c'è una certa quantità di studenti
    2. la quantità degli studenti si può fissare in un #define, magari col nome Q_STUDENTI
    3. ad ogni studente della classe viene assegnata una quantità fissa di voti, per cui torna bene un secondo #define Q_VOTI
    4. a questo punto, la matrice possiamo chiamarla "classe", e sarà int classe[Q_STUDENTI][Q_VOTI]
    5. i contatori per scorrere la matrice, per chiarezza, possiamo chiamarli "iSt" per "indice studente" e "iVt" per "indice voto"

    I cicli dovrebbero ora essere più leggibili:
    for( iSt=0; iSt<Q_STUDENTI; iSt++ ) {
        // stampi il numero d'ordine dello studente (iSt+1)
    
        for( somma_voti=0, iVt=0; iVt<Q_VOTI; iVt++ ) {
            // assegni il voto casuale a classe[iSt][iVt]
            // mostri in console il voto appena assegnato
            // aggiungi il voto classe[iSt][iVt] alla somma
        }
    
        // calcoli la media
        // la mostri in console
    }
    Volendo puoi ottenere lo stesso risultato anche senza la matrice, visto che a quanto pare non è richiesta la memorizzazione dei voti.
    for( iSt=0; iSt<Q_STUDENTI; iSt++ ) {
        int vt;
        // stampi il numero d'ordine dello studente (iSt+1)
    
        for( somma_voti=0, iVt=0; iVt<Q_VOTI; iVt++ ) {
            // assegni il voto casuale alla variabile vt
            // mostri in console il voto appena assegnato a vt
            // aggiungi il voto vt alla somma somma_voti
        }
    
        // calcoli la media
        // la mostri in console
    }
    Grazie mille della risposta, il programma funziona e ti sei spiegato molto bene, grazie ancora del consiglio sulle variabili, capisco sia difficile interpretarle dall'esterno, il problema richiedeva la matrice per questo l'ho inizializzata, siccome è un argomento nuovo ho trovato difficoltà nell'eseguirlo, posso chiederti come mai debba usare la matrice per voto casuale e per il sommatore? Scusami ma proprio non riesco a capire, grazie ancora.
  • Re: Calcolo media

    PRIMA di pensare al programma, DEVI avere chiaro come fare con CARTA E MATITA.

    LETTERALMENTE con carta e matita: per la precisione carta a quadretti e micromina 0.5 (vabbe, anche la classica matita di legno va bene)

    Quindi disegnati la tabellina, RAGIONA su come faresti contando con le dita/a mente (ma se proprio DEVI, puoi usare ANCHE la calcolatrice tascabile).

    Siamo al livello dei conti della serva

    Non come modellare una rete neurale da 16 layer di cui 4 convoluzionari e 3 con una funzione di attivazione relu
    (NON SONO parole a caso )
  • Re: Calcolo media

    migliorabile ha scritto:


    PRIMA di pensare al programma, DEVI avere chiaro come fare con CARTA E MATITA.

    LETTERALMENTE con carta e matita: per la precisione carta a quadretti e micromina 0.5 (vabbe, anche la classica matita di legno va bene)

    Quindi disegnati la tabellina, RAGIONA su come faresti contando con le dita/a mente (ma se proprio DEVI, puoi usare ANCHE la calcolatrice tascabile).

    Siamo al livello dei conti della serva

    Non come modellare una rete neurale da 16 layer di cui 4 convoluzionari e 3 con una funzione di attivazione relu
    (NON SONO parole a caso )
    Grazie del consiglio d’altronde non si viene al mondo con le codifiche in testa, sono ai primi passi con questo mondo e piu vado avanti piu capisco quanto sia bello, buona giornata
  • Re: Calcolo media

    Volevo risponderti ma, per qualche ragione, l'invio del messaggio non viene accettato.

    Edit: provo a risponderti con un'immagine
    https://dopiest-curtains.000webhostapp.com/risposta.pn
  • Re: Calcolo media

    AldoBaldo ha scritto:


    Volevo risponderti ma, per qualche ragione, l'invio del messaggio non viene accettato.

    Edit: provo a risponderti con un'immagine
    https://dopiest-curtains.000webhostapp.com/risposta.pn
    Grazie,grazie e ancora grazie
Devi accedere o registrarti per scrivere nel forum
6 risposte