2 consigli minimi,
per dichiarare i float lo potevi fare tutto in una riga ma non è obbligatorio.
Quello che può influenzare sulla memoria è avere scelta e s come int quando potresti benissimo avere un semplice unsigned short.
Poi, prevedi sempre che l'utente faccia una scelta che non gli hai chiesto, semplicemente mettendo un default: in ogni switch.
Per il resto è un ottimo esercizio