La prima funzione è errata
bool controllaColonne (int** A, int r, int c)
{
int i, j, somma, valore = 0;
for(i=0; i<r; i++)
valore += A[i][0];
for(j=1; j<c; j++){
somma = 0;
for(i=0; i<r; i++)
somma += A[i][j];
if (somma != valore)
return false;
}
return true;
}
int** A = new int*[5];
A[0] = new int[5]{2, 3, 0, 2, 1};
A[1] = new int[5]{1, 0, -3, 7, 1};
A[2] = new int[5]{1, 3, 0, 0, 3};
A[3] = new int[5]{0, -1, 6, -2, 1};
A[4] = new int[5]{3, 2, 4, 0, 1};
cout << boolalpha << controllaColonne(A, 5, 5) << endl; // true
int** A = new int*[5];
A[0] = new int[5]{2, 3, 0, 2, 0};
A[1] = new int[5]{1, 0, -3, 7, 1};
A[2] = new int[5]{1, 3, 0, 0, 3};
A[3] = new int[5]{0, -1, 6, -2, 1};
A[4] = new int[5]{3, 2, 4, 0, 1};
cout << boolalpha << controllaColonne(A, 5, 5) << endl; // false