*Especificar con pre, poscondición, declaración de constantes y variables los siguientes problemas:*
*a) Dados los arreglos a y b determinar si todos los elementos de a son mayores a exactamente 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;
$\{P: N\geq 0 \land M\geq 0\}$
$S$
$\{Q: r=\langle \forall i : 0\leq i<N : \langle N \ j: 0\leq j<M : b.j<a.i \rangle = 2\rangle\}$
**Otra solucion posible**
Const N: Int;
Const M: Int;
Var a: array $[0,N)$ of Num;
Var b: array $[0,M)$ of Num;
Var r: Bool;
$\{P: N\geq 0 \land M\geq 0\}$
$S$
$\{Q: r=\langle \forall i: 0\leq i>N : \langle \exists j,k : 0\leq j<k<M: a.i>b.j \land a.i>b.k \land \langle \forall s : 0\leq s<M \land s\neq j \land s\neq k : a.i\leq b.s \rangle \rangle \rangle \}$
**Criterios**
* Asumir a y b del mismo tamaño: -2pts
* El programa solo pide que todos los elementos de a sean mayores a al menos 2 elementos de b: -3pts.
* Condiciones innecesarias a N,M: -2pts
* los índices se van de rango: -2pts.
* Para todo elemento de b y similares: -4pts.
* Variables/constantes mal declaradas: -2pts.
* Elementos de la misma posición de a y b: -2pts.
*b) Dado un arreglo con por lo menos dos elementos, calcular el mínimo del promedio de dos valores consecutivos.*
Const N: Int;
Var a: array $[0,N)$ of Num;
Var min: Num;
$\{P: N\geq 2\}$
$S$
$\{Q: min=\langle Min.i: 0\leq i<N-1 : (a.i+a.(i+1))/2\rangle \}$
**Criterios**
* Error en la precondición: -2pts.
* El índice se va de rango: -2pts.
* Los elementos no son consecutivos: -3pts