Aunque para este caso puede funcionar no es muy recomendable ese <if> de la línea 7. Ya que vas a convertir más caracteres de los que deberías, por ejemplo, los espacios los vas a convertir en arrobas y repito, aunque para este ejercicio no influye, no es muy correcto. Para eso está la función <tolower()> o si se hace usando los valores en ascii es mejor comprobar que es una letra es decir:
Ya se que se van a modificar todos lo demás, pero en este caso como bien dices no influye
me puede el ansia de hacer minimalista y rápido el código. Quiero mas 'retos' como este
me encantan!
saludos.