#include <stdio.h> #include <stdlib.h> #define MAX 100 void leggiMatrice(float mat[MAX][MAX], int *d); void stampaMatrice(float mat[MAX][MAX], int d); float calcoloMedia(float mat[MAX][MAX], int d); float minimoDiag(float mat[MAX][MAX], int d); void sottraiMedia(float mat[MAX][MAX],float media, int d); void aggiungiMinimo(float mat[MAX][MAX],float minimo, int d); void ordinaRighe(float mat[MAX][MAX], int d); int main() { int d = 0; float media = 0; float minimo = 0; float mat[MAX][MAX]; leggiMatrice(mat, &d); stampaMatrice(mat,d); media = calcoloMedia(mat,d); printf("%2.f",media,d); minimo = minimoDiag(mat,d); sottraiMedia(mat, media,d); aggiungiMinimo(mat, minimo,d); stampaMatrice(mat,d); ordinaRighe(mat,d); stampaMatrice(mat,d); return 0; } void leggiMatrice(float mat[MAX][MAX], int *d){ printf("Per piacere, inserisci la dimensione della matrice? \n\n"); scanf("%d", d); printf("Inserisci la matrice.\n"); for(int i = 0; i<*d; i++) { for(int j=0; j<*d; j++) { printf("Inserisci il valore al posto [%d][%d]", i+1,j+1); scanf("%f",&mat[i][j]); } } } void stampaMatrice(float mat[MAX][MAX], int d){ printf("\n"); for(int i = 0; i<d; i++) { for(int j=0; j<d; j++) { printf("%2.f",mat[i][j]); } printf("\n"); } } float calcoloMedia(float mat[MAX][MAX], int d){ float media = 0; for(int i=0; i<d; i++) { media += mat[i][i]; } media = media/d; return media; } float minimoDiag(float mat[MAX][MAX], int d){ float minimo = 0; minimo = mat[0][0]; for(int i=1; i<d; i++) { if(minimo>mat[i][i]) { minimo = mat[i][i]; } } return minimo; } void sottraiMedia(float mat[MAX][MAX], float media, int d){ for(int i = 0; i<d-1; i++) { for(int j=i+1; j<d; j++) { mat[i][j] -= media; } } } void aggiungiMinimo(float mat[MAX][MAX], float minimo, int d){ for(int i=1; i<d; i++){ for(int j=0; j<i; j++){ mat[i][j] += minimo; } } } void ordinaRighe(float mat[MAX][MAX], int d){ int max2 = 0; int temp = 0; for(int i=0; i<d; i++) { max2 = i; for(int j = i+1; j<d ; j++){ if(mat[max2][0]<mat[j][0]) { max2 = j; } } if(max2 != i) { for(int k=0; k<d; k++) { temp = mat[max2][k]; mat[max2][k] = mat[i][k]; mat[i][k]= temp; } } } }