% -*- coding: iso-8859-2 -*-
\documentclass[a4paper]{article}
\usepackage{progm}
\analpacks
\analoldal{3. feladatsor, 3. feladat}
\begin{document}
\noindent
\emph{Feladat:} Adott egy $x$ sorozat, ami egy vállalat
dolgozóinak adataiból áll.  Egy dolgozóról a következő adatokat tudjuk:
\begin{itemize}
\item azonosító szám
\item születési adatok (idő, hely, anyja neve)
\item lakcím
\item iskolai végzettség
\item a munkaviszony kezdete
\item beosztás
\item fizetés
\end{itemize}

Adott még az $y$ sorozat, ami azonosítókat tartalmaz.  Mindkét sorozat
az azonosítószám szerint rendezett.  Adjuk meg a $z$ sorozatban
azoknak a dolgozóknak az adatait, akiknek az azonosítója szerepel
$y$-ban és a munkaviszonyuk kezdete egy adott évnél régebbi!

\emph{Specifikáció:}\\
$\R = (azon:\N,szh:\seq(Ch),szi:\N,an:\seq(Ch),lc:\seq(Ch),iv:\seq(Ch),kezd:\N,beoszt:\seq(Ch),fiz:\N)$\\
$A = \alatt{\seq(\R)}{x} \times \alatt{\seq(\N)}{y} \times \alatt{\N}{ev} \times \alatt{\seq(\R)}{z}$\\
$B = \alatt{\seq(\R)}{x'} \times \alatt{\seq(\N)}{y'} \times \alatt{\N}{ev'}$\\
$Q = ( ev=ev' \es x=x' \es y=y' \es x' \text{ növekvő} \es y' \text{ növekvő} )$\\
$R = ( ev=ev' \es z=f(x', y'))$

Ahol $f$ elemenként feldolgozható és egy elemet feldolgozó változata:\\
$e\in\R, e'\in\N$\\
$\Tilde f(\{e\}, \varnothing)=\varnothing$\\
$\Tilde f(\varnothing, \{e'\})=\varnothing$\\
\[
\Tilde f(\{e\}, \{e.azon\})=
\left\{
\begin{array}{ll}
  \{e\} & \text{, ha } e.kezd < ev \\
  \varnothing & \text{, egyébként}
\end{array}
\right.
\]

Az egyszerűség kedvéért a dátumokat egyszerűen egy évszámnak tekintjük
(azaz egy természetesnek) és a hónapokat, napokat nem tároljuk.

Tehát ez egy kétváltozós egyértékű elemenkénti feldolgozás.

\begin{stuki}[17cm]
  \stm{z:=<>}
  \begin{WHILE}{6}{\stm{x.dom\ne0 \vagy y.dom\ne0}}
    \begin{CASE}[2]{4}{3}
      \WHEN{\stm{y.dom=0 \vagy (y.dom\ne0 \es \\ x.dom\ne0 \es x.lov.azon<y.lov)}}
      \stm{x:lorem}
      \WHEN{\stm{x.dom\ne0 \es y.dom\ne0 \es \\ x.lov.azon=y.lov}}
      \begin{IF}{1}{\stm{x.lov.kezd<ev}}
	\stm{z:hiext(x.lov)}
	\ELSE
	\SKIP
      \end{IF}
      \stm{x:lorem}
      \stm{y:lorem}
      \WHEN{\stm{x.dom=0 \vagy (x.dom\ne0 \es \\ y.dom\ne0 \es x.lov.azon>y.lov)}}
      \stm{y:lorem}
    \end{CASE}
  \end{WHILE}
\end{stuki}
\end{document}
