//Cristian Ronzoni 3Ain
#include <iostream>
#include <cstdlib>
#include <ctime>
using namespace std;

#define DIM 5 // Dimensione della matrice

// Funzione per generare una matrice casuale
void riempiMatrice(int matrice[DIM][DIM]) {
    srand(time(0)); // Inizializza il generatore di numeri casuali
    for (int i = 0; i < DIM; ++i) {
        for (int j = 0; j < DIM; ++j) {
            matrice[i][j] = rand() % 10 + 1; // Numeri casuali tra 1 e 10
        }
    }
}

// Funzione per stampare la matrice
void stampaMatrice(int matrice[DIM][DIM]) {
    for (int i = 0; i < DIM; ++i) {
        for (int j = 0; j < DIM; ++j) {
            cout << matrice[i][j] << " ";
        }
        cout << endl;
    }
}

// Funzione per calcolare la somma di una riga
int sommaRiga(int matrice[DIM][DIM], int riga) {
    int somma = 0;
    for (int j = 0; j < DIM; ++j) {
        somma += matrice[riga][j];
    }
    return somma;
}

// Funzione per calcolare la somma di una colonna
int sommaColonna(int matrice[DIM][DIM], int colonna) {
    int somma = 0;
    for (int i = 0; i < DIM; ++i) {
        somma += matrice[i][colonna];
    }
    return somma;
}

// Funzione per calcolare la somma della diagonale principale
int sommaDiagonalePrincipale(int matrice[DIM][DIM]) {
    int somma = 0;
    for (int i = 0; i < DIM; ++i) {
        somma += matrice[i][i];
    }
    return somma;
}

// Funzione per calcolare la somma della diagonale secondaria
int sommaDiagonaleSecondaria(int matrice[DIM][DIM]) {
    int somma = 0;
    for (int i = 0; i < DIM; ++i) {
        somma += matrice[i][DIM - 1 - i];
    }
    return somma;
}

int main() {
    int matrice[DIM][DIM];

    // Genera la matrice casuale
    riempiMatrice(matrice);

    // Stampa la matrice
    cout << "Matrice generata:" << endl;
    stampaMatrice(matrice);

    // Calcola e stampa le somme
    int riga, colonna;
    cout << "Inserisci il numero della riga (0 a " << DIM-1 << "): ";
    cin >> riga;
    cout << "Somma della riga " << riga << ": " << sommaRiga(matrice, riga) << endl;

    cout << "Inserisci il numero della colonna (0 a " << DIM-1 << "): ";
    cin >> colonna;
    cout << "Somma della colonna " << colonna << ": " << sommaColonna(matrice, colonna) << endl;

    cout << "Somma della diagonale principale: " << sommaDiagonalePrincipale(matrice) << endl;
    cout << "Somma della diagonale secondaria: " << sommaDiagonaleSecondaria(matrice) << endl;

    return 0;
}

