Sono molto soddisfatto dei progressi, il
tuo nuovo codice anche se ha dei piccoli errori, ha la sua logica e sopratutto funziona.
Nel
tuo nuovo codice, ho inserito altre indicazioni e spiegazioni.
#include <stdlib.h>
#include <stdio.h>
#include <stdlib.h>
#define RIG 40
#define COL 10
int main() {
float M[RIG][COL];
int R,C,i,j;
float somma_studente[RIG],somma_compiti[COL];
float media_studente[RIG],media_compiti[COL],media_totale;
somma_studente[RIG]=0; // l'indice RIG non esiste (gli indici vanno da 0 a 39), meglio azzerare tutto il vettore
somma_compiti[COL]=0; // come sopra
media_studente[RIG]=0; // come sopra
media_compiti[COL]=0; // come sopra
media_totale=0;
printf("Inserire il numero di studenti che hanno sostenuto le prove: ");
scanf("%d",&R);
printf("Inserire il numero di compiti svolti durante l'anno: ");
scanf("%d",&C);
/*costruzione della matrice*/
for(i=0;i<R;i++){
printf("Immettere le valutazione per il seguente studente %d\n",i+1);
for(j=0;j<C;j++) {
printf("Quali sono le valutazioni per il seguente studente %d? ",i+1);
scanf("%f",&M[i][j]);
}
}
/*Calcolare la media di ogni studente*/
for(i=0;i<R;i++){
for(j=0;j<C;j++){
somma_studente[i]=somma_studente[i]+M[i][j];
media_studente[i]=somma_studente[i]/C; // calcoli inutilmente j volte sempre la stessa media, il risultato è corretto lo stesso
}
}
printf("RISULTATO PER STUDENTE\n");
for(i=0;i<R;i++){ // qui cicli gli studenti ok
for(j=0;j<C;j++){ // il ciclo j, ti ripete inutilmente l'output, toglilo
printf("La media dello studente %d e': %2.2f\n",i+1,media_studente[i]);
}
}
/*Calcolare la media di ogni compito*/
for(j=0;j<C;j++){
for(i=0;i<R;i++){
somma_compiti[j]=somma_compiti[j]+M[i][j];
media_compiti[j]=somma_compiti[j]/R; // calcoli inutilmente i volte la stessa media, il risultato è corretto lo stesso
}
}
printf("RISULTATO PER COMPITO\n");
for(j=0;j<C;j++){ // qui cicli i compiti ok
for(i=0;i<R;i++){ // il ciclo i, ti ripete inutilmente l'output, toglilo
printf("La media del compito %d e': %2.2f\n",j+1,media_compiti[j]);
}
}
// questo è sbagliato, quanto valgono i e J ???
// per fare la media totale devi fare un nuovo ciclo for o utilizzare uno dei precedenti (media di ogni compito o media di ogni studente)
media_totale=(media_studente[i]+media_compiti[j])/(R*C);
printf("La media totale dei compiti svolti dagli studenti durante l'anno e': %2.2f",media_totale);
return 0;
}
Un vettore è meglio azzerarlo in fase di dichiarazione così:
float somma_studente[RIG] = {0}