Exercici 2 · Fundamentos de Programación I URV Examen Parcial de Fonaments de Programació I

Tema: Traça, verificació i correcció d'algorismes · Del examen Examen Parcial de Fonaments de Programació I

Enunciado

Exercici 2 (4 punts). Anàlisi i correcció d'un algorisme de càlcul estadístic

Es disposa del codi següent dissenyat per determinar el percentatge d'estudiants que han destinat entre 30 i 40 hores (ambdues incloses) a preparar una matèria. L'entrada és una seqüència d'enters positius introduïts per teclat, culminada amb el nombre -1. El valor percentual resultant ha de ser un enter.

algorisme calcul_proporcio

const

MINH <-- 30

MAXH <-- 40

fconst

var

conta, cont: enter

percen, hores: real

fvar

inici

escriure("Introdueix la llista d'hores i acaba amb el nombre -1")

mentre (hores <> -1) fer

llegir(hores)

si (hores >= MINH) i (hores <= MAXR) llavors

conta <-- conta + 1

fsi

cont <-- cont + 1

percen <-- conta div cont * 100

escriure("El percentatge que ha invertit entre", MINR, "i", MAXR, "hores es:", percen)

fmentre

falgorisme

Localitzeu totes les errades semàntiques i estructurals del codi i proposeu la versió corregida definitiva.

Enunciado: Exercici 2 · Fundamentos de Programación I URV Examen Parcial de Fonaments de Programació I

Solución

Según los criterios oficiales de corrección

Localitzeu totes les errades semàntiques i estructurals del codi

Solución: 1. Manca d'inicialització: Els comptadors conta i cont no estan inicialitzats a zero abans del bucle. 2. Tipus de dada de la variable de sortida: La variable percen ha de ser de tipus enter, no pas real, d'acord amb els requisits. 3. Lectura prèvia anticipada: Cal fer una primera lectura de hores abans de comprovar la condició del mentre. Dins del bucle, la lectura ha d'anar al final per no processar valors inexistents o ometre el darrer. 4. Ubicació del càlcul i emissió del resultat: El càlcul del percentatge i el missatge de sortida es trobaven indegudament a l'interior de la iteració; han de figurar un cop finalitzat el bucle complet. 5. Precedència en la divisió entera: L'expressió conta div cont * 100 produeix truncament prematur a 0 sempre que conta < cont. Cal canviar l'ordre: (conta * 100) div cont (o alternativament divisió real i conversió posterior). 6. Discrepàncies de nomenclatura: Ús erroni de MAXR i MINR en comptes de les constants definides MAXH i MINH (errades tipogràfiques).

Proposeu la versió corregida definitiva.

Solución: ```pseudocode algorisme calcul_proporcio_corregit const MINH <-- 30 MAXH <-- 40 fconst var conta, cont, hores, percen: enter fvar inici conta <-- 0 cont <-- 0 escriure("Introdueix la llista d'hores i acaba amb el nombre -1") llegir(hores) mentre (hores <> -1) fer si (hores >= MINH) i (hores <= MAXH) llavors conta <-- conta + 1 fsi cont <-- cont + 1 llegir(hores) fmentre si (cont > 0) llavors percen <-- (conta * 100) div cont escriure("El percentatge que ha invertit entre ", MINH, " i ", MAXH, " hores es: ", percen) sino escriure("No s'ha introduït cap registre d'hores vàlid.") fsi falgorisme ```

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.