Pregunta 1.b · Prácticas de programación UOC Juny 2020

Tema: Diseño descendente sobre vectores de registros en lenguaje algorítmico · Del examen Juny (2020)

Enunciado

Considerando la definición de datos de un torneo de ajedrez empleada a lo largo del curso:

const

MAX_PAIRINGS: integer:= 5;

MAX_ROUNDS: integer:= 9;

end const

type

tResult = {whiteWins, blackWins, draw};

tDate = record

day: integer;

month: integer;

year: integer;

end record

tPairing = record

idPairing: integer;

idWhitePlayer: integer;

idBlackPlayer: integer;

result: tResult;

end record

tRound = record

number: integer;

pairings: vector [MAX_PAIRINGS] of tPairing;

numPairings: integer;

numWhiteWins: integer;

numBlackWins: integer;

numDraws: integer;

end record

tChessTournament = record

name: string;

location: string;

date: tDate;

rounds: vector [MAX_ROUNDS] of tRound;

numRounds: integer;

end record

end type

Dada la cabecera de la función:

function winners_round (c: tChessTournament; num: integer): list(integer)

que debe retornar una lista con los identificadores de todos los participantes vencedores en la ronda num:

b) [30%] Codifica la función en lenguaje algorítmico empleando diseño descendente. Se deben programar todos los subprogramas auxiliares necesarios a excepción de las primitivas del TAD lista.

Enunciado: Pregunta 1.b · Prácticas de programación UOC Juny 2020

Solución

Según los criterios oficiales de corrección

b. [30%] Codifica la función en lenguaje algorítmico empleando diseño descendente. Se deben programar todos los subprogramas auxiliares necesarios a excepción de las primitivas del TAD lista.

Solución: ```pseudocode function findRound(c: tChessTournament; num: integer): integer var i: integer; pos: integer; end var pos := 0; i := 1; while i <= c.numRounds and pos = 0 do if c.rounds[i].number = num then pos := i; else i := i + 1; end if; end while; return pos; end function function winners_round(c: tChessTournament; num: integer) : list(integer) var res: list(integer); idx, j: integer; p: tPairing; end var res := create(); idx := findRound(c, num); for j := 1 to c.rounds[idx].numPairings do p := c.rounds[idx].pairings[j]; if p.result = whiteWins then res := addEnd(res, p.idWhitePlayer); else if p.result = blackWins then res := addEnd(res, p.idBlackPlayer); end if; end if; end for; return res; end function ```

La explicación paso a paso, hecha con IA, es Premium. Premium

Resuélvelo aquí mismo: corrección automática, pistas y solución paso a paso.

‹ Pregunta 1.b · 2021 · Pregunta 1.b - Diseño descendente · Juny 2020 ›

Más ejercicios de Diseño descendente sobre vectores de registros en lenguaje algorítmico