98 lines
2.5 KiB
C++
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;
|
|
}
|