Stai continuando a cambiare il valore di flag senza neanche controllare gli elementi della matrice.

Edit. inoltre direi che visto che c'è una diagonale, la matrice deve essere quadrata. Perciò non ti servono due dimensioni ma una.