Nella seconda funziona manca l'uguale tra double prodotto e 1.0. Nel do-while, va inserito il doppio carattere ||, che è l'OR logico, inserendone solo uno calcoli l'OR tra i bit; nel ciclo for tratti a come fosse una matrice, ma l'hai dichiarata come semplice variabile intera; alle funzioni devi passare il nome della matrice, nel tuo caso a, non double m[3][3]. Nell'if per il confronto va usato il doppio uguale ==.
E per favore, usa i tag code