Il programma è il seguente:
- Codice: Seleziona tutto
#include <stdio.h>
#include <stdlib.h>
/*Scrivere un programma che chieda di inserire i voti di n studenti per n prove, che visualizzi i voti di ogni
studente e che infine calcoli la media di ogni studente, la media per ogni prova e la media totale*/
#define MAXSTUDENTI 99
#define MAXPROVE 10
int main(void) {
int studenti, prove, x, y;
float matrice[MAXSTUDENTI][MAXPROVE];
float vettore1[MAXSTUDENTI], vettore2[MAXPROVE];/*la variabile vettore2[MAXPROVE] serve per cacolare la media
delle prove. Ho scelto come sua grandezza "MAXPROVE" in modo da evitare che sia più piccolo del valore che
immetterà l'utente tramite la variabile "prove".*/
float mediatotale = 0;
printf("Inserisci il numero totale degli studenti: ");
scanf("%d", &studenti);
if(studenti>MAXSTUDENTI || studenti<2) {
do {
printf("Numero di studenti non valido. Inserisci un numero valido: ");
scanf("%d", &studenti);
}while(studenti>MAXSTUDENTI || studenti<2);
}
printf("Inserisci il numero di prove per ogni studente: ");
scanf("%d", &prove);
if(prove>MAXPROVE || prove<1) {
do {
printf("Numero di prove non valido. Inserisci un numero valido: ");
scanf("%d", &prove);
}while(prove>MAXPROVE || prove<1);
}
for(x=0; x<studenti; x++) {
printf("\nStudente n.%2d\n", x+1);
for(y=0; y<prove; y++) {
printf("Inserisci il voto della prova n.%2d: ", y+1);
scanf("%f", &matrice[x][y]);
if(matrice[x][y]>10 || matrice[x][y]<0) {
do {
printf("Voto non valido. Inserisci un voto valido: ");
scanf("%f", &matrice[x][y]);
}while(matrice[x][y]>10 || matrice[x][y]<0);
}
mediatotale += matrice[x][y];
}
}
printf("\nTABELLA");
for(x=0; x<studenti; x++) {
printf("\nVoti dello studente n.%2d: ", x+1);
for(y=0; y<prove; y++) {
printf("%5.1f", matrice[x][y]);
}
}
/*Cacolo media dello studente*/
for(x=0; x<studenti; x++) {
for(y=0; y<prove; y++) {
vettore1[x] += matrice[x][y];
}
}
printf("\n\nMEDIA DEGLI STUDENTI");
for(x=0; x<studenti; x++) {
printf("\nMedia dello studente n.%2d: %5.1f", x+1, vettore1[x]/prove);
}
/*Calcolo media per prova*/
/*Inverto le colonne della matrice con le sue righe in modo da portarmi tutti i valori delle colonne sulle righe,
cosicché posso raccogliere i valori delle colonne in vettore2[y]*/
for(y=0; y<prove; y++) {
for(x=0; x<studenti; x++) {
vettore2[y] += matrice[x][y];
}
}
printf("\n\nMEDIA DELLE PROVE");
for(y=0; y<prove; y++) {
printf("\nMedia delle prove n.%2d: %5.1f", y+1, vettore2[y]/studenti);
}
printf("\n\nMEDIA TOTALE\nLa media totale e': %4.1f\n", mediatotale/(prove*studenti));
return 0;
}
Ciò che non funziona bene è quando stampa il valore della media delle prove numero 3. La media delle altre prove le stampa bene, mentre riguardo alla media delle prove numero 3 stampa un numero che non centra niente.
Esempio:
Da che dipende? Computer stregato o cosa?
Tale programma è dato come esercizio in un pdf che sto leggendo (è sempre lo stesso pdf
Alla fine però non ho capito cosa intendeva... di conseguenza ho fatto a modo mio... e a quanto pare non è andata a buon fine! Aiutino?

Elettrotecnica e non solo (admin)
Un gatto tra gli elettroni (IsidoroKZ)
Esperienza e simulazioni (g.schgor)
Moleskine di un idraulico (RenzoDF)
Il Blog di ElectroYou (webmaster)
Idee microcontrollate (TardoFreak)
PICcoli grandi PICMicro (Paolino)
Il blog elettrico di carloc (carloc)
DirtEYblooog (dirtydeeds)
Di tutto... un po' (jordan20)
AK47 (lillo)
Esperienze elettroniche (marco438)
Telecomunicazioni musicali (clavicordo)
Automazione ed Elettronica (gustavo)
Direttive per la sicurezza (ErnestoCappelletti)
EYnfo dall'Alaska (mir)
Apriamo il quadro! (attilio)
H7-25 (asdf)
Passione Elettrica (massimob)
Elettroni a spasso (guidob)
Bloguerra (guerra)




di solito le variabili per calcolare una media le inizializzo sempre a zero, non so perché con quelle due ho fatto un'eccezione! E io che pensavo chissà che errore fosse...