School-Coding-Cpp/sfusi/rotazione e inversione matr...

98 lines
2.5 KiB
C++

#include <stdio.h>
#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;
}