Vale, se trata de un bucle infinito, en el while que está encima de "Prueba 3". Si ponéis un system("pause"); justo antes de Prueba 3 lo veréis mucho mejor.
El problema parece que se resuelve correctamente, pues lo he seguido un poco con el Debugger; pero no logra salir del bucle principal :S.
A ver si conseguis ayudarme a ver qué es lo que pasa. Yo creo que el error debe estar en los siono (siono1 y siono2) que son los que controlan cuando se vuelve a entrar en un bucle y cuando no.
Bueno creo que así habrá quedado más "desglosada" mi duda. Espero que sepais ayudarme.
Un saludo!