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.

Enunciado: Ejercicio 2.b - Esquemas de recorrido y búsqueda… · Fundamentos de Programación UOC Juny 2022

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.

Ejercicio 2.b · Juny 2022 ›

Más ejercicios de Esquemas de recorrido y búsqueda sobre tablas