Ejercicio 2.b - Esquemas de recorrido y búsqueda · Fundamentos de Programación UOC Juny 2022
Tema: Esquemas de recorrido y búsqueda sobre tablas · Del examen Juny (2022)
Enunciado
Ejercicio 2 (20% del total). Lectura y diseño de algoritmos sobre tablas y registros
Se dispone de las siguientes estructuras de datos y de la definición del subprograma mysteryAction:
const
MAX_VIDEOGAMES: integer = 100;
end const
type
tAgeCategories = {AGE3, AGE12, AGE18}
{ Rangos: AGE3 (3 a 11 años), AGE12 (12 a 17 años) y AGE18 (18 o más años) }
tVideoGame = record
title: string;
price: real; { importe en euros }
recommendedAge: tAgeCategories;
end record
tVideoGamesTable = record
nVideoGames: integer;
vGamesSummary: vector[MAX_VIDEOGAMES] of tVideoGame;
end record
end type
action mysteryAction(in games: tVideoGamesTable,
out res1: integer, out res2: integer, out res3: integer)
var
i: integer;
end var
res1:= 0;
res2:= 0;
res3:= 0;
for i:= 1 to games.nVideoGames do
if games.vGamesSummary[i].recommendedAge = AGE3 then
res1:= res1 + 1;
else
if games.vGamesSummary[i].recommendedAge = AGE12 then
res2:= res2 + 1;
else
res3:= res3 + 1;
end if;
end if;
end for
end action
b.
Modifica el cuerpo de la acción para que, conservando el cálculo de las categorías, determine e imprima en la salida estándar el nombre o título del artículo que posea el coste económico más alto.
Si coincidieran varios títulos con el mismo precio tope, debe presentarse el primero que figure en el vector. Se puede dar por sentado que la estructura de entrada contiene como mínimo un registro de videojuego.

Solución
Según los criterios oficiales de corrección
b. Modifica el cuerpo de la acción para que, conservando el cálculo de las categorías, determine e imprima en la salida estándar el nombre o título del artículo que posea el coste económico más alto.
Solución: ```pseudocode action mysteryAction(in games: tVideoGamesTable, out res1: integer, out res2: integer, out res3: integer) var i: integer; posMax: integer; costeMax: real; end var { Inicialización de los contadores de categorías } res1 := 0; res2 := 0; res3 := 0; { Inicialización del seguimiento de precio tope } posMax := 1; costeMax := games.vGamesSummary[1].price; for i := 1 to games.nVideoGames do { Comprobación de precio más alto con estricto menor } if costeMax < games.vGamesSummary[i].price then posMax := i; costeMax := games.vGamesSummary[i].price; end if; { Distribución por grupos de edad recomendada } if games.vGamesSummary[i].recommendedAge = AGE3 then res1 := res1 + 1; else if games.vGamesSummary[i].recommendedAge = AGE12 then res2 := res2 + 1; else res3 := res3 + 1; end if; end if; end for { Notificación por la salida estándar } writeString("Most expensive videogame:"); writeString(games.vGamesSummary[posMax].title); end action ```
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.
‹ Ejercicio 2.b · Juny 2022 · Pregunta 2 · 2018 ›