Ejercicio de Programación:

Enunciado

En el módulo Juegos, se dispone del tipo abstracto de datos CartaBaraja, que representa una carta de la baraja española. También se dispone de dos operaciones asociadas: PonerPalo y PonerTriunfo.PonerPalo, establece el palo de la carta: oros, copas, espadas o bastos.Por ejemplo: PonerPalo(carta,oros).PonerTriunfo, establece el triunfo de la carta: as, dos,…, sota, caballo o rey.Por ejemplo: PonerTriunfo(carta,rey).Se pide crear en el módulo principal una baraja de 40 cartas y la operación Vencer. Una carta vence a otra cuando su triunfo es mayor, excepto cuando una de las cartas es de la "pinta" que entonces gana aún cuando su triunfo sea menor. Si dos cartas tienen igual triunfo vence cualquiera de las dos.Ejemplo: carta1 es el dos de copas, carta2 es el rey de bastos y la "pinta" es copas.Vencer(carta1,carta2,copas) devuelve cierto; Vencer(carta2,carta1,copas) devuelve falso; Vencer(carta1,carta2,bastos) devuelve falso.

 

Solución

MODULE Examen;
FROM Juegos IMPORT CartaBaraja, PonerPalo, PonerTriunfo, TipoPalo, TipoTriunfo, PedirPalo, PedirTriunfo;

TYPE
Baraja=ARRAY[1..40] OF CartaBaraja;

VAR
B1:Baraja;
C1:TipoPalo;
C2:TipoTriunfo;

    PROCEDURE Vencer(Carta1,Carta2:CartaBaraja;Pinta:TipoPalo);
    BEGIN
        IF (PedirPalo(Carta1)=PedirPalo(Carta2)) THEN
            IF (PedirTriunfo(Carta1)> PedirTriunfo(Carta2)) THEN
                RETURN TRUE;
            ELSE
                RETURN FALSE;
            END;
        ELSE
            IF (PedirPalo(Carta1)=Pinta) THEN
                RETURN TRUE;
            ELSIF (PedirPalo(Carta2)=Pinta ) THEN
                RETURN FALSE;
            ELSE
                RETURN TRUE;
            END;
    END;
END Vencer;

BEGIN
(* Rellenado de las cuarenta cartas de la baraja *)
FOR C1:= oros TO bastos DO
FOR C2:= as TO rey DO
PonerPalo (B1[ORD(C2)+1+ORD(C1)*10],C1);
    PonerTriunfo (B1[ORD(C2)+1+ORD(C1)*10],C2);
END;
END;
END Examen.

Enviar correo electrónico a AdministradorWebOrganizacion con preguntas o comentarios sobre este documento.
Copyright EUITI UNED © 2000. Última modificación: 26 de noviembre de 2002