libri-javascript-python

Proponiamo un semplice esercizio con le matrici in C.

Si vuole realizzare un programma che richieda all’utente di inserire i voti corrispondenti a 7 prove sostenute in Matematica durante l’anno da 6 studenti della classe e calcoli la media di ogni prova e la media di ogni studente.

Ogni linea deve contenere pertanto i voti dello studente e la rispettiva media; quindi ci saranno 7 righe e 8 colonne. L’ottava colonna dunque conterrà la media delle prove sostenute da ciascun studente e la settima riga conterrà la media di ciascuna prova di tutti gli studenti.

Es: Nella riga 1 inserisco quindi i voti delle 7 prove sostenute nell’anno da uno studente.

Studente 1: 8, 10, 7, 7, 9, 7, 8

Il programma dovrà aggiungere la media nell’ottava colonna cioè:

Studente 1: 8, 10, 7, 7, 9, 7, 8, 8

Allo stesso modo per le altre righe.

Facciamo lo stesso discorso per le colonne. Nella prima colonna ci saranno tutti i voti della prima prova sostenuta da ciascun studente, aggiungiamo nell’ultima riga la media.

Prova1
studente16
studente2 7
studente3 8
studente4 9
studente5 10
studente6 8
media8

Continuiamo così per ogni colonna.

Procedimento algoritmo esercizio con le matrici in C

Innanzitutto occorre definire il numero di righe e di colonne. Come dicevamo prima aggiungeremo una riga e una colonna per la media.

Quindi:

#define M 8
#define N 7

Inseriamo i dati come abbiamo già spiegato negli esempi precedenti e dopo calcoliamo la media. L’unico accorgimento è quello di fermarsi ad N-1 ed M-1 in quanto dobbiamo inserire 6 righe e 7 colonne, l’ultima riga e l’ultima colonna è riservata alla media.

Per fare la media di ciascun studente, cioè la media per riga, basta scorrere la matrice con i due cicli, avendo l’accortezza di inizializzare la somma a zero e sommare tutti gli elementi della riga:

a[i][M-1]=a[i][M-1]+a[i][j];

e dopo occorre dividere per n-1

a[N-1][j]=a[N-1][j]/(N-1);

Lo stesso ragionamento per la colonna.

Ecco il listato completo.

#include<stdio.h>
#define M 8
#define N 7

int main(){
	float a[N][M];
	int i,j;
		
	printf("\nInseriamo i voti nella matrice \n");
	for(i=0;i<N-1;i++)
	    for(j=0;j<M-1;j++) {
		printf("Studente %d \tprova %d: ", i, j);
		scanf("%f", &a[i][j]);
	    }
				
	printf("\nCalcolo media delle prove \n");
	for(j=0;j<M;j++) {
	    a[N-1][j]=0;
	    for(i=0;i<N-1;i++)
	       a[N-1][j]=a[N-1][j]+a[i][j];
	    a[N-1][j]=a[N-1][j]/(N-1);
	}
		
	printf("\nCalcolo media studente \n");
	for(i=0;i<N-1;i++){
	     a[i][M-1]=0;
	     for(j=0;j<M-1;j++) 
		a[i][M-1]=a[i][M-1]+a[i][j];
	     a[i][M-1]=a[i][M-1]/(M-1);
	}
		
	printf("\nStampiamo i dati \n");
	for (i=0;i<N;i++) {	
	    printf("\n");
	    for(j=0;j<M;j++) 
	      printf("\t%7.2f", a[i][j]);				
	}				
}

Questo è solo un esempio di possibile risoluzione dell’esercizio con le matrici in C.

Alcuni link utili:

Somma elementi diagonale principale di una matrice

Esempio sulla somma degli elementi cornice esterna

Sommare due matrici

Somma dei numeri di una matrice

Matrice trasposta

Prodotto tra matrici

Ricerca elementi in una matrice

Inserire dati in una matrice

Tavola pitagorica in C

Array multidimensionali

Programma sui triangoli in C

Media dei numeri in un array

Array con numeri random

Quick sort in C

Selection sort in C

Merge sort in C

Insertion Sort in C