*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.