#include #define N 3 // Dimensione della matrice (N x N) // Funzione per stampare la matrice void stampaMatrice(int matrice[N][N]) { for (int i = 0; i < N; i++) { for (int j = 0; j < N; j++) { printf("%d ", matrice[i][j]); } printf("\n"); } printf("\n"); } // Inversione degli elementi della matrice void inverteMatrice(int matrice[N][N]) { int totaleElementi = N * N; for (int i = 0; i < totaleElementi / 2; i++) { int riga1 = i / N; int col1 = i % N; int riga2 = (totaleElementi - 1 - i) / N; int col2 = (totaleElementi - 1 - i) % N; // Scambio degli elementi int temp = matrice[riga1][col1]; matrice[riga1][col1] = matrice[riga2][col2]; matrice[riga2][col2] = temp; } } // Rotazione della matrice di 90 gradi in senso orario void ruota90Gradi(int matrice[N][N]) { int temp[N][N]; for (int i = 0; i < N; i++) { for (int j = 0; j < N; j++) { temp[j][N - 1 - i] = matrice[i][j]; } } // Copia la matrice ruotata nella matrice originale for (int i = 0; i < N; i++) { for (int j = 0; j < N; j++) { matrice[i][j] = temp[i][j]; } } } // Rotazione della matrice di 180 gradi void ruota180Gradi(int matrice[N][N]) { for (int i = 0; i < N * N / 2; i++) { int riga1 = i / N; int col1 = i % N; int riga2 = (N * N - 1 - i) / N; int col2 = (N * N - 1 - i) % N; // Scambio degli elementi int temp = matrice[riga1][col1]; matrice[riga1][col1] = matrice[riga2][col2]; matrice[riga2][col2] = temp; } } // Funzione principale int main() { int matrice[N][N] = { {1, 2, 3}, {4, 5, 6}, {7, 8, 9} }; printf("Matrice originale:\n"); stampaMatrice(matrice); // Inversione degli elementi inverteMatrice(matrice); printf("Matrice con inversione degli elementi:\n"); stampaMatrice(matrice); // Ripristina la matrice originale per le rotazioni int matriceOriginale[N][N] = { {1, 2, 3}, {4, 5, 6}, {7, 8, 9} }; // Rotazione di 90 gradi ruota90Gradi(matriceOriginale); printf("Matrice ruotata di 90 gradi:\n"); stampaMatrice(matriceOriginale); // Rotazione di 180 gradi ruota180Gradi(matrice); printf("Matrice ruotata di 180 gradi:\n"); stampaMatrice(matrice); return 0; }