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

{P:N0  M0}
S

{Q:r=i,j:0i<N0j<M:A.i>B.j}

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.
  • iN,iM
    en lugar de
    i<N,j<M
    : -1pt.
  • en lugar de
    : -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

{P:N0}
S

{Q:r:i:0i<N:j:0ji:A.j>C}

Errores comunes y criterio

  • No declarar
    C
    : -4pts
  • C: Int: -2pts.
  • 0<i
    ,
    N>0
    ó
    iN
    : -2pts cada uno.
  • No declarar
    r
    : -2pts.
  • en lugar de
    : -3pts.
  • No declarar post ni precondición: -10pts.