*Especificar con pre, poscondición, declaración de constantes y variables los siguientes programas:*
*a) Dados dos arreglos A y B decir si existe un elemento de A que sea igual al promedio de dos elementos de B.*
**Solución posible:**
Const : N Int
Const: M Int
var A: array $[0,N)$ of Num
var B: array $[0,M)$ of Num
Var r: Bool
$\left\lbrace P: N\geq 0 \ \land \ M\geq 0 \right\rbrace$
$S$
$\left\lbrace Q: r\equiv\big<\exists i,j,k: 0\leq i < N \land 0\leq j,k< M: A.i=(B.j+B.k)/2 \big>\right\rbrace$
**Errores comunes y criterio**
* Derivar: no resto puntos.
* Considerar sólo elementos distintos de $B$: no resto puntos.
* No declarar variables/constantes: -3pts.
* Declarar mal variables/constantes:-2pts.
* Precondiciones extra a $N,M$: -2pts.
* *$N=M$: -2pts.
* Considerar sólo elementos sucesivos de $B$: -1 pt.
* Considerar A.i y B.i, promedio sobre más elementos, usar j, k en lugar de $B.j, B.k$: -2pts.
* Considerar siempre el mismo arreglo $A$: -5pts.
*b) Calcular el máximo y el mínimo de un arreglo no vacío de enteros*
**Solución posible:**
Const : N Int
var A: array $[0,N)$ of Num
var max, min: Num
$\left\lbrace P: N> 0 \right\rbrace$
$S$
$\left\lbrace Q: max=\big<Max\ i: 0\leq i < N : A.i\big> \land min=\big< Min\ i: 0\leq i < N : A.i \big>\right\rbrace$
**Errores comunes y criterio**
* Derivar: no resto puntos.
* Considerar elementos distintos de $B$: no resto puntos.
* No declarar variables/constantes: -3pts.
* Declarar mal variables/constantes:-2pts.
* Precondiciones extra a $N$: -2pts.
* Usar Max.A y Min.A: -6pts.
* Usar Max y Min en lugar de $Max i$, $Min i$, usar $i$ en ugar de $A.i$: -2pts.