Pois, não pensei nessa hipotese... com a alternativa que voce deu, "&&", têm o mesmo efeito e aliás, se dir for igual a -1, não executa a segunda fase do loop. Dessa maneira, corrige-o:
dir || horpos > 0
Que é a maneira simplificada disto:
!(dir != -1 && horpos <= 0)
que foi o que voce pensou no inicio, mas na forma de excessão. De resto, acho que não há razão para o codigo não funcionar...
↧