riga[8] non esiste
ma se tu lasci il for in quel modo va a controllarla
la condizione dovrebbe essere i<8 non i<=8

edit: anche il while è sbagliato
while (riga[i ]=1) non è un confronto, è un assegnazione. Che per di più varrà sempre come true

edit2: anche gli else sono sbagliati, o almeno lo sono i messaggi di errore al loro interno
infatti (e prendo come esempio il primo ma al secondo si applica lo stesso ragionamento) ti dovrebbe dire che "il valore si trova sul limite inferiore blabla" anche se non si trova li ma la variabile dir è diversa da s