*Especificar los siguientes programas imperativos:* *a) Dados los arreglos A y B, determina si todos los elementos de A son mayores a todos los 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 r: Bool $\left\lbrace P: N\geq 0 \ \land \ M\geq 0 \right\rbrace$ $S$ $\left\lbrace Q: r=\big<\forall i,j: 0\leq i < N \land 0\leq j< M: A.i>B.j \big>\right\rbrace$ **Errores comunes y criterio** * Considerar solo el caso $N=M$: - 2pts. * Comparar solo $A.i$ y $B.i$, no están comparando cada elemento de $A$ con todos los elementos de $B$, si no solo con el que está en la misma posición: -4pts. * No declarar $r$ ó $B$:-2 pts. * $a.i>a.j$ en lugar de $a.i>b.j$: -1pt. * Derivar: no resté puntos, ignorado. * $i\leq N, i\leq M$ en lugar de $i<N, j<M$: -1pt. * $\exists$ en lugar de $\forall$: -3pts. *b) Dado un arreglo A y una constante C, determina si la suma de los elementos de algún segmento inicial no vacío de A es mayor a C.* **Solución posible:** Const N: Int, Const C: Num, Var A: array $[0,N)$ of Num, r: Bool $\left\lbrace P: N\geq 0 \right\rbrace$ $S$ $\left\lbrace Q: r:\big< \exists i : 0\leq i < N: \big<\sum j:0\leq j\leq i:A.j\big> > C \big> \right\rbrace$ **Errores comunes y criterio** * No declarar $C$: -4pts * C: Int: -2pts. * $0< i$, $N>0$ ó $i\leq N$: -2pts cada uno. * No declarar $r$: -2pts. * $\forall$ en lugar de $\exists$: -3pts. * No declarar post ni precondición: -10pts.