zakończenie jest poprawne, niepoprawne jest twoje założenie, że tym znakiem będzie coś innego niż ‘+’ lub '-'
efekt wiadomy 
zmienna znak nie zostanie zmieniona, jeżeli dane w strumieniu wejściowym się skończą
czyli dla danych:
+ 1
-
program nigdy się nie skończy (a przynajmniej do momentu, gdy zostanie przerwany z zewnątrz)
skończył by się np. dla:
+1
-
*
ale w zadaniu nie ma, że na zakończenie jest jakiś nie biały znak
więc powinieneś uzupełnić swoje informacje o strumieniach wejściowych (o wyjściowych pewnie też)