Domanda Programma linguaggio C

tonno100

Utente Silver
20 Agosto 2013
131
25
13
88
Salve ragazzi
da poco tempo sto sperimentando per la prima volta il linguaggio C
ora mi sono imbattuto in un esercizio particolare ed è il seguente:
Scrivere un programma che richieda all’utente i voti delle otto prove sostenute durante l’anno da diciotto
studenti di una classe e calcoli la media di ogni studente, la media di ogni prova e la media globale. Il programma dovrà
infine visualizzare l’intera matrice e la media globale. [Suggerimento: si utilizzi una matrice di 19 linee e 9 colonne
dove nelle prime otto vengono memorizzati in ciascuna linea i voti di uno studente e nella nona la rispettiva media;
nella diciannovesima linea viene invece memorizzata la media per prova.]
Codice:
#include <stdio.h>
int mat[20][10];
float media;
int voti[9];
main(){
    int i,n,j;
    n=18;
    for (i=0; i<n; i++){
    printf("alunno n.%d\n", i+1);
    printf("prima prova: ");
    scanf("%d",&voti[i]);
    printf("seconda prova : ");
    scanf("%d",&voti[i]);
    printf("terza prova: ");
    scanf("%d",&voti[i]);
    printf("quarta prova: ");
    scanf("%d",&voti[i]);
    printf("quinta prova: ");
    scanf("%d",&voti[i]);
    printf("sesta prova: ");
    scanf("%d",&voti[i]);
    printf("settima prova: ");
    scanf("%d",&voti[i]);
    printf("ottava prova: ");
    scanf("%d",&voti[i]);}
/*media globale*/
printf("la media globale\n\n");
media=voti[i];
for (i=0; i<7;i++)
media=voti[i]+media;
media/=8;
printf("la media \x8A:%f\n",media);
/*caricamento della matrice*/
printf("visualizzazione dei voti e media per alunno\n");
for(i=0; i<20; i++) {
printf("\n");
for(j=0; j<10; j++)
printf("%5d", voti[i]);
}}

il programma funziona benissimo infatti se provate vi chiederà per ogni studente 8 voti.
mi calcola la media mi manca solo questo passaggio ossia, dover caricare nelle linee delle matrice ( da 1a 8) i voti e nella 9 la media.
riesco anche a stampare la matrice ma non so inserire nelle prime otto i voti che ho inserito precedentemente
mi aiutate
???
 
C:
#include <stdio.h>

int mat[20][10];
float media;
int voti[9];

main()
{
    int i,n,j;
    n=18;
    for (i=0; i<n; i++) {
        printf("alunno n.%d\n", i+1);
        printf("prima prova: ");
        scanf("%d",&voti[i]);
        printf("seconda prova : ");
        scanf("%d",&voti[i]);
        printf("terza prova: ");
        scanf("%d",&voti[i]);
        printf("quarta prova: ");
        scanf("%d",&voti[i]);
        printf("quinta prova: ");
        scanf("%d",&voti[i]);
        printf("sesta prova: ");
        scanf("%d",&voti[i]);
        printf("settima prova: ");
        scanf("%d",&voti[i]);
        printf("ottava prova: ");
        scanf("%d",&voti[i]);
    }
   
    /*media globale*/
    printf("la media globale\n\n");
    media=voti[i];
   
    for (i=0; i<7;i++)
        media=voti[i]+media;
       
    media/=8;
    printf("la media \x8A:%f\n",media);
   
    /*caricamento della matrice*/
    printf("visualizzazione dei voti e media per alunno\n");
   
    for(i=0; i<20; i++) {
        printf("\n");
        for(j=0; j<10; j++)
            printf("%5d", voti[i]);
    }
}

Indentazione e corretta impostazione del codice a parte (che ti ho sistemato ma che lasceremo in secondo piano visto che come hai detto ancora sei in una fase di studio, anche se in realtà ti faciliterebbe) tu a livello pratico non stai usando la matrice (int mat[20][10];)

A livello pratico, stai caricando ad ogni ciclo i voti sempre sullo stesso array (int voti[9];)e la media sempre nella stessa variabile (float media;), quindi alla fine quando fai stampare la matrice (che di fatto è generata in modo fittizio da delle print) stai stampando sempre il solito array voti dove ogni volta sovrascrivi i voti.
Risolti questi problemi dovresti aver fatto.
 
Indietro
Top Bottom