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.

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 ›