Hola Agustín,
Solo quería aclarar que normalmente no corregimos soluciones enteras por el EVA. Habiendo dicho esto, con respecto a tu pregunta, en principio la solución puede ser correcta con la lógica en el main, en las interrupciones, o distribuída como en tu caso. Siempre que tenés lógica en el main tenés que tener cuidado que lo que se ejecuta en cada loop sea lo que querés. Un error muy común es manejar mal las condiciones de los if y que un código que se debería ejecutar una única vez, se ejecute continuamente, una vez en cada iteración del while.
Saludos,
Federico
Solo quería aclarar que normalmente no corregimos soluciones enteras por el EVA. Habiendo dicho esto, con respecto a tu pregunta, en principio la solución puede ser correcta con la lógica en el main, en las interrupciones, o distribuída como en tu caso. Siempre que tenés lógica en el main tenés que tener cuidado que lo que se ejecuta en cada loop sea lo que querés. Un error muy común es manejar mal las condiciones de los if y que un código que se debería ejecutar una única vez, se ejecute continuamente, una vez en cada iteración del while.
Saludos,
Federico