\documentclass[a4paper]{article}
\usepackage{progm}
\analpacks
\analoldal{2. feladatsor, 3. feladat}
\begin{document}
\noindent
\emph{Feladat:} Határozzuk meg az $f$ függvény legnagyobb $k$-val osztható értékét!

\emph{Specifikáció:}\\
$A = \alatt{\Z}{a} \times \alatt{\Z}{b} \times \alatt{\N}{k} \times \alatt{\Z}{max} \times \alatt{\L}{l}$\\
$B = \alatt{\Z}{a'} \times \alatt{\Z}{b'} \times \alatt{\N}{k'}$\\
$Q = ( a=a' \es b=b' \es a\le b+1 \es k=k')$\\
$R = ( Q \es l=(\exists i\in[a..b]:k|f(i)) \es l\nyil(\exists i\in[a..b]:max=f(i) \es k|max \es 
\forall j\in[a..b]:(k|f(j))\nyil(f(j)\le max)))$

A specifikáció nagyon hasonló a feltételes maximumkeresés programozási tételéhez.
Az eltéréseket az alábbi táblázattal foglalhatjuk össze:

\begin{tabular}{ccc}
feladat &  & feltételes maximumkeresés \\
\hline
$a$ & \knyil & $m$ \\
$b$ & \knyil & $n$ \\
$k|f(i)$ & \knyil & $\beta(i)$ \\
$j$ & \knyil & $k$ \\
$-$ & \knyil & $i$
\end{tabular}

A visszavezetés paraméteres a $k$ szerint, valamint alteres
általánosított az $i$ eredménykomponens szerint.

\begin{stuki}[16cm]
  \stm{j,l:=a-1,\hamis}
  \begin{WHILE}{4}{\stm{j \ne b}}
    \begin{CASE}{2}{9}
      \WHEN[2]{\stm{k \not | f(j+1)}}
      \SKIP
      \WHEN[3]{\stm{k|f(j+1)\es\nem l}}
      \stm{l,i,max:=\igaz,j+1,f(j+1)}
      \WHEN[4]{\stm{k|f(j+1) \es l}}
      \begin{CASE}{1}{2}
        \WHEN{\stm{f(j+1)\ge max}}
        \stm{i,max:=j+1,f(j+1)}
        \WHEN{\stm{f(j+1)\le max}}
        \SKIP
      \end{CASE}
    \end{CASE}
    \stm{j:=j+1}
  \end{WHILE}
\end{stuki}

\end{document}
