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?