Программу надо сформатировать и тогда её структура будет видна лучше. А чтобы понять, как идет выполнение, в нужных точках ставим промежуточную выдачу - это называется "трассировкой".
var s, k: integer; label met; begin s:=-12; k:=90; Writeln('s=',s,', k=',k); s:=s+10; Writeln('s=',s); met: Writeln('Метка met:'); k:=k+10; Write('k=',k); if k<200 then s:=50 else s:=s+k; Writeln(', s=',s); if k<200 then goto met; Writeln('Результат: s=',s) end.
Перечислим их:
1111 => 4+4+4+4 = 16
1112 => 4+4+4-3 = 9
1121 => 4+4-3+4 = 9
1122 => 4+4-3-3 = 2
1211 => 4-3+4+4 = 9
1212 => 4-3+4-3 = 2
1221 => 4-3-3+4 = 2
1222 => 4-3-3-3 = -5
2111 => -3+4+4+4 = 9
2112 => -3+4+4-3 = 2
2121 => -3+4-3+4 = 2
2122 => -3+4-3-3 = -5
2211 => -3-3+4+4 = 2
2212 => -3-3+4-3 = -5
2221 => -3-3-3+4 = -5
2222 => -3-3-3-3 = -12
Перечислим полученные результаты с разными числами(одинаковые выводить не будем)
16
9
2
-5
-12
ответ: Таких чисел будет 5(пять)
А чтобы понять, как идет выполнение, в нужных точках ставим промежуточную выдачу - это называется "трассировкой".
var
s, k: integer;
label
met;
begin
s:=-12;
k:=90;
Writeln('s=',s,', k=',k);
s:=s+10;
Writeln('s=',s);
met:
Writeln('Метка met:');
k:=k+10; Write('k=',k);
if k<200 then s:=50 else s:=s+k;
Writeln(', s=',s);
if k<200 then goto met;
Writeln('Результат: s=',s)
end.
Результат выполнения программы:
s=-12, k=90
s=-2
Метка met:
k=100, s=50
Метка met:
k=110, s=50
Метка met:
k=120, s=50
Метка met:
k=130, s=50
Метка met:
k=140, s=50
Метка met:
k=150, s=50
Метка met:
k=160, s=50
Метка met:
k=170, s=50
Метка met:
k=180, s=50
Метка met:
k=190, s=50
Метка met:
k=200, s=250
Результат: s=250