Program Kamen; var s :string; i :byte; {Prave zpracovávaný znak} s2:string; Function N(var i :byte):byte; {Ekvivalent C-ckoveho i++} begin N := i; i := i+1; end; Function Zpracuj :string; var s1 :string; c :char; begin case s[i] of 'a'..'z': zpracuj:=s[N(i)]; '!': begin N(i); s1:=zpracuj; zpracuj:= '('+s1+'&'+s1+')'; end; '(': begin N(i); s1:=zpracuj; c:=s[N(i)]; s2:=zpracuj; N(i); case c of '*': zpracuj := '(('+s1+'&'+s2+')&('+s1+'&'+s2+'))'; '+': zpracuj := '(('+s1+'&'+s1+')&('+s2+'&'+s2+'))'; '^': zpracuj := '((('+s1+'&'+s2+')&'+s1+')&(('+s1+'&'+s2+')&'+s2+'))'; '>': zpracuj := '(('+s1+'&'+s2+')&'+s1+')'; '<': zpracuj := '(('+s1+'&'+s2+')&'+s2+')'; '&': zpracuj := '('+s1+'&'+s2+')'; '|': zpracuj := '((('+s1+'&'+s1+')&('+s2+'&'+s2+'))&((' +s1+'&'+s1+')&('+s2+'&'+s2+')))'; end; end; end; end; begin ReadLn(s); i:=1; WriteLn(zpracuj); end.