Voy a intentar explicar mejor, tengo que hacer una especie de sudoku, en donde me piden hacer cuatros funciones, VerificarTablero,MostrarTablero,verificardigito y colocarNumero, las dos primera las tenia hechas ( o las tengo echas), pero las dos últimas son las que mas se me han complicado
la primera función es validar si un tablero contiene una solución valida ( Qué no haya número repetidos en filas, columna o cuadrante)
http://prntscr.com/7pnmrp esos serían los diferente cuadrante, esa función la hice así: 
bool VerificarTablero() {
	
bool ver=true;
int cont=0,c=0;
	
	for(int i=cont+1;i<9;i++) {
		for(int j=0;j<9;j++) {
 		
		if (mat[cont][j]==mat[i][j])
			{cout<<"Solucion invalida"<<endl;}
				
		ver=false;}
		else 
		{cout<<"Solucion Valida"<<endl;
		ver=true;}
		}
		 }
	cont++;
	
return (ver);
}
Pero ahora cuando lo ejecuto me da solución invalida muchas veces y no una como quisiera, (Ahí no verifique los cuadrante, solo las filas y columna, ya que no sabia como verificar cada cuadrante)
en la otra la hice como acción en donde solo mostre el tablero : 
void MostrarTablero(){
	
	
	
	for(int i=0;i<9;i++) {
		for(int j=0;j<9;j++) {
 		cout<<mat[i][j];
		 
		 }
		 cout<<endl;
		 
	} las otras dos fue en la que pedí ayuda, porque no sabia como hacerlas
Funcion VerificarDigitos:
bool VerificarDigitos () {
bool validar=false;
int x,y,n;
 
 cout<<"ingrese la coordenada x"<<endl;
 cin>>x;
 cout<<"ingrese la coordenada y"<<endl;
 cin>>y;
 cout<<"ingrese el valor"<<endl;
 cin>>n;
 for (int i =0; i<9; i++){
 if (mat[x][i]==n || mat[i][y]==n) {
  validar=true;
  break;
}  
if (validar==true){
  cout<<"valor repetido"<<endl;
}
 
return (validar);
}	
}quisiera saber si me podrían ayudar en la primera función y en la tercera, ya que no me da como quería ni como pensé que me daría, si no es mucha la molestia