Salve a tutti, sono alle prese con questo esercizio:

Ho realizzato l'algoritmo in C, tenendo conto che restituisce 1 al posto di TRUE e 0 invece che FALSE:
codice:
#include <stdio.h>
main(){
int m, n, i, j;
int a[50][50];
int diverse, trovate;
/* inizializzazione e riempimento vettore*/
printf("m?\n");
scanf("%d", &m);
printf("n?\n");
scanf("%d", &n);
for(i = 0; i < m; i++){
for(j = 0; j < n; j++){
printf("Valore in %d%c%d\n", i, ',', j);
scanf("%d", &a[i][j]);
}
}
for(i = 0; i < m; i++){
for(j = 0; j < n; j++){
printf(" %d", a[i][j]);
}
printf("\n");
}
i = 0;
j = 0;
diverse = 0;
trovate = 0;
/*controllo colonne*/
while(trovate == 0 && j < n-1){
while(i < m && diverse == 0){
diverse = 0;
if(a[i][j] != a[i][j+1]){
diverse = 1;
}
i++;
}
if(i == m){
trovate = 1;
}
j++;
i = 0;
}
if(trovate == 1){
/*controllo righe*/
i = 0;
j = 0;
diverse = 0;
trovate = 0;
while(trovate == 0 && i < m-1){
while(j < n && diverse == 0){
diverse = 0;
if(a[i][j] != a[i+1][j]){
diverse = 1;
}
j++;
}
if(j == n){
trovate = 1;
}
i++;
j = 0;
}
}
/*se trovate = 1 allora esistono 2 righe e 2 colonne uguali*/
printf("%d\n", trovate);
}
ll problema è che mi restituisce in ogni caso 0, e nn riesco ad individuarne il motivo. Qualcuno può aiutarmi?