Massimo e minimo di una matrice in C

Nella seguente pagina viene spiegato come creare un programma in C in grado di trovare il massimo e il minimo di una matrice. In particolare, il procedimento risulta essere simile a quanto fatto nella pagina "Valore massimo e minimo di un vettore", con l’unica differenza che ora ci troviamo in due dimensioni e non più in una.

Iniziamo dichiarando una matrice di dimensione MxN, dove M ed N sono due macro definite con la direttiva #define, e indicano rispettivamente, il numero di righe e di colonne della matrice. Per quanto riguarda il contenuto della matrice, procediamo ad riempirla manualmente, inizializzando con dei valori arbitrari. Chiaramente a questo punto, invece di riempirla direttamente nel codice, si potrebbe chiedere all’utente di inserire da tastiera i valori della matrice.

Definita la matrice, abbiamo bisogno di due variabili: max e min, che devono possedere lo stesso tipo di dato utilizzato per dichiarare la matrice, che nel nostro caso è di tipo int.
Le due variabili verranno usate per mantenere traccia, rispettivamente, del valore più grande e del valore più piccolo letto durante il passaggio di ogni elemento contenuto all’interno della matrice.

Per evitare possibili problemi, inizializziamo le variabili max e min al valore contenuto nella prima posizione della matrice.

A questo punto possiamo scorrere l’intera matrice usando due cicli for innestati, e verificare se esistono elementi più grandi del valore contenuto nella variabile max e se esistono elementi più piccolo del valore contenuto nella variabile min. Se si verifica uno dei due casi, sostituiamo il valore nella rispettiva variabile. In questo modo, ogni volta che viene letto un numero che è più grande o più piccolo dell’attuale massimo o minimo, quest’ultimi vengono aggiornati.

Al termine dei due cicli for, le variabili max e min conterranno il valore massimo e minimo contenuti all’interno della matrice.

Codice completo per trovare il massimo e minimo di una matrice in C

Di seguito viene riportato l’intero codice per trovare il massimo ed il minimo di una data matrice.


#include <stdio.h>
#define M 4
#define N 3

int main(){
    int mat[M][N] = {{3, 4, 7}, {5, 7, 3}, {0, -2, 5}, {9, 4, 6}};
    int max, min;
    
    max = mat[0][0];
    min = mat[0][0];
    
    for(int i=0; i<M; i++){
        for(int j=0; j<N; j++){
            // Verifica se l'attuale numero è maggiore dell'attuale massimo
            if(mat[i][j] > max)
            max = mat[i][j];
                
            // Verifica se l'attuale numero è minore dell'attuale minimo
            if(mat[i][j] < min){
                min = mat[i][j];
            }
        }
    }
    printf("Il massimo vale: %d\n", max);
    printf("Il minimo vale: %d", min);

    return 0;
}


Il massimo vale: 9 Il minimo vale: -2

Indice pagine linguaggio C: