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% de la nota). Interpretación y enriquecimiento de algoritmos sobre registros
A partir del repertorio de definiciones y el subprograma presentado a continuación:
const
MAX_VEHICLES: integer = 100;
end const
type
tEnergyCategories = {PETROL, DIESEL, HYBRID, ELECTRIC};
tVehicle = record
brand: string;
price: real; { Expresado en euros }
combustible: tEnergyCategories;
end record
tVehiclesTable = record
nVehicles: integer;
vVehiclesSummary: vector[MAX_VEHICLES] of tVehicle;
end record
end type
action mysteryAction(in vehicles: tVehiclesTable, in name: string, out res1: integer, out res2: integer)
var
i: integer;
end var
res1:= 0;
res2:= 0;
for i:= 1 to vehicles.nVehicles do
if vehicles.vVehiclesSummary[i].brand = name then
res1:= res1 + 1;
if vehicles.vVehiclesSummary[i].combustible = HYBRID then
res2:= res2 + 1;
end if
end if
end for
end action
Ejercicio 2
b.
Modifica el cuerpo de la acción para que, preservando su comportamiento original, calcule y escriba en el canal estándar de salida el coste medio de los automóviles con motorización eléctrica ( ELECTRIC) que figuren en vehicles. Si en el registro no existe ningún vehículo eléctrico, no debe emitir ninguna salida. Considera como premisa que la tabla siempre contendrá al menos un registro válido almacenado.

Solución
Según los criterios oficiales de corrección
b. Modifica el cuerpo de la acción para que, preservando su comportamiento original, calcule y escriba en el canal estándar de salida el coste medio de los automóviles con motorización eléctrica (ELECTRIC) que figuren en vehicles.
Solución: ```pseudocode action mysteryAction(in vehicles: tVehiclesTable, in name: string, out res1: integer, out res2: integer) var i: integer; totalElectricos: integer; acumuladoPrecioElectricos: real; precioMedioElectricos: real; end var res1 := 0; res2 := 0; totalElectricos := 0; acumuladoPrecioElectricos := 0.0; for i := 1 to vehicles.nVehicles do { Lógica original de filtrado por marca } if vehicles.vVehiclesSummary[i].brand = name then res1 := res1 + 1; if vehicles.vVehiclesSummary[i].combustible = HYBRID then res2 := res2 + 1; end if end if { Nuevo cómputo para unidades con motorización eléctrica } if vehicles.vVehiclesSummary[i].combustible = ELECTRIC then totalElectricos := totalElectricos + 1; acumuladoPrecioElectricos := acumuladoPrecioElectricos + vehicles.vVehiclesSummary[i].price; end if end for { Escritura condicional del precio medio } if totalElectricos > 0 then precioMedioElectricos := acumuladoPrecioElectricos / integerToReal(totalElectricos); writeString("Average price for electric vehicles:"); writeReal(precioMedioElectricos); end if 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.