% -*- coding: iso-8859-2 -*-
\documentclass[a4paper]{article}
\usepackage{progm}
\analpacks
\analoldal{2. feladatsor, 21. feladat}
\begin{document}
\noindent
\emph{Feladat:} Adottak az $x$ és $y$ vektorok, ahol $y$ elemei az $x$
indexei közül valók.  Keressük meg az $x$ vektornak az $y$-ban
megjelölt elemei közül a legnagyobbat!

\emph{Specifikáció:}\\
$\V = \vect(\Z, \Z)$ \\
$A = \alatt{\V}{x} \times \alatt{\V}{y}\times \alatt{\Z}{max}$\\
$B = \alatt{\V}{x'} \times \alatt{\V}{y'}$\\
$Q = ( x=x' \es y=y' \es \forall j\in[y.lob,y.hib]:y_j\in[x.lob,x.hib])$\\
$R = ( Q \es \exists i\in[y.lob,y.hib]:(x_{y_i}=max) \es \forall j\in[y.lob,y.hib]:x_{y_j} \le max)$

Visszavezetés a maximum keresésre, alteres általánosított ($i$), (esetleg paraméteres ($x$ vagy $y$ szerint)):

\begin{tabular}{ccc}
  feladat &  & max. ker. \\
  \hline
  $y.lob$ & \knyil & $m$ \\
  $y.hib$ & \knyil & $n$ \\
  $x_{y_i}$ & \knyil & $f(i)$
\end{tabular}

\begin{stuki}[7cm]
  \stm{i,k,max:=y.lob,y.lob,x_{y.lov}}
  \begin{WHILE}{3}{\stm{k\ne y.hib}}
    \begin{IF}{1}{\stm{x_{y_{k+1}} > max}}
    \stm{i,max:=k+1,x_{y_{k+1}}}
    \ELSE
    \SKIP
    \end{IF}
    \stm{k:=k+1}
  \end{WHILE}
\end{stuki}

\end{document}
