Io con il borland ottengo risultati diversi.

Ma quell'if per come è scritto non serve a nulla. L'unica condizione che può verificarsi è (m<=0), le altre sono sempre false.

Per quanto riguarda il cin è normale che vada in errore quando si sbagli a inserire il dato.
Per risolvere puoi mettere queste due righe dopo l'if.

cin.clear();
cin.ignore(INT_MAX,'\n');

Per inciso, sbagliando volutamente inserimento sia la versione con un cout sia la versione con due cout non funzionano.