Allora: devo seguire alla lettera questa traccia d'esame, ma ho trovato difficoltà nel penultimo punto.
Il codice non da errori, ma ci deve essere qualche passaggio sbagliato!

TRACCIA
codice:
ESERCIZIO 1
Si realizzi un programma che, mediante opportuni sottoprogrammi, legga da tastiera una matrice di
interi con segno di dimensioni scelte dall'utente, la stampi, crei un'altra matrice che contenga le
somme dei valori contenuti in tutte le sue sottomatrici 2x2 non sovrapposte, la stampi e restituisca
la riga che contiene il valore massimo nella nuova matrice.
Il candidato realizzerà:
– la lettura della matrice mediante un sottoprogramma che funzioni per qualsiasi matrice, note
in precedenza le sue dimensioni;
– la stampa di entrambe le matrici riutilizzando un unico sottoprogramma che stampa una
matrice di dimensioni qualsiasi;
– la generazione della seconda matrice mediante un sottoprogramma apposito che funzioni
con matrici di dimensioni qualsiasi (vedere esempio in figura) e indichi al programma
principale se tutti i valori sono stati usati o meno;
– la ricerca della riga che contiene il valore massimo mediante un sottoprogramma apposito
che funzioni per qualsiasi matrice.
Il candidato curerà che l'utente sia impossibilitato ad inserire valori negativi per le dimensioni della
matrice.
Esercizio svolto da me:
codice:
#include <iostream>
using namespace std;

void leggiMat(int*mat, int rig, int col);
void stampaMat (int*mat, int rig, int col);
bool mat2x2 (int*mat, int rig, int col);


int main () {
    int r,c;
    cout<<"inserire n.righe\n";
    cin>>r;
    cout<<"inserire n.colonne\n";
    cin>>c;
    int m[r][c];
    leggiMat (&m[r][c],r,c);
    stampaMat (&m[r][c],r,c);
    cout<<endl<<endl;
    if (mat2x2 (&m[r][c],r,c)==false) cout<<"Non ci sono valori inutilizzati\n";
    else cout<<"Ci sono valori inutilizzati\n";
    
    }
    

void leggiMat (int*mat, int rig, int col) {
    for (int i=0;i<rig;i++) {
        for (int j=0;j<col;j++) {
            cout<<"inserisci mat["<<i<<"]["<<j<<"]: ";
            cin>>*(mat+i*col+j);
            }
        }
    }


void stampaMat (int*mat, int rig, int col) {
    for (int i=0;i<rig;i++) {
        for (int j=0;j<col;j++) {
            cout<<*(mat+i*col+j);
            }
        cout<<endl;
        }
    }


bool mat2x2 (int*mat, int rig, int col) {
    bool valori_inutilizzati=false;
    int RIG,COL;
    if (rig%2==0) RIG=rig/2;
    else { RIG=(rig-1)/2; valori_inutilizzati=true; }
    if (col%2==0) COL=col/2;
    else { COL=(col-1)/2; valori_inutilizzati=true; }
    int MAT[RIG][COL];
    
    int I=0,J=0;
    for (int i=0;i<rig;i=i+2) {
        for (int j=0;j<col;j=j+2) {
            MAT[I][J]=*(mat+i*col+j)+*(mat+i*col+(j+1))+*(mat+(i+1)*col+j)+*(mat+(i+1)*col+(j+1));
            J++;
            }
        cout<<endl;
        I++;
        }
    stampaMat (&MAT[RIG][COL],RIG,COL);
    
    return valori_inutilizzati;
    }
L'errore dovrebbe essere nel sottoprogramma mat2x2...