The first thing you should do is to check letter and number after input. If the user types wrong coordinates (or small letter for instance) you probably would crash when accessing your table entries.

To check for possible values of a given cell, you simply could make a for loop from 1 to 9 and for each number you make a triple check on row, column and sqare whether the number already occurs. The checks can be done by an additional for loop, e. g. for row check you keep the row index fixed and run the column index and vice versa for column check.

Square is a little bit more tricky cause you need to compute the top-left coordinates of the square from the current row and column. That could be done by using integer division:

int rowTopOfSquare = (currentRow/3) * 3;

The above gives 0 for currentRow = 0,1,2 and 3 for currentRow = 3,4,5 and so on.

Do the same with columnLeftOfSqare.

Then in the check loop running i from 1 to 9 you calculate

row = (rowTopOfSquare + ((i-1)/3); // division gives 0,0,0,1,1,1,2,2,2
col = (columnLeftOfSqare +((i-1)%3); // modulo 3 gives 0,1,2,0,1,2,0,1,2

That way you'll get all coordinates of the given square.

If any of the triple checks finds the i already set you could break the current loop and omit the remaining checks. Only an i which passes all three loops without hit would be a possible number that you can store in a new array of 9.