Exercici 2 · Fundamentos de Programación I URV Examen Parcial 1: Elements Bàsics, Recorregut i Cerca
Tema: Algorismes bàsics i esquema de recorregut de seqüències · Del examen Examen Parcial 1: Elements Bàsics, Recorregut i Cerca
Enunciado
Exercici 2 (5 punts). Comptabilització d'hores, hores extres i nòmina mensual
A l'empresa FP SA es vol portar el control mensual del registre horari de la plantilla. Les dades d'un empleat s'introdueixen mitjançant una seqüència de nombres enters acabada amb la sentinella -1.
Com que el mes no sempre s'inicia en dilluns, el primer número de la seqüència codifica el dia de la setmana d'inici del mes:
1: dilluns (dll)
2: dimarts (dm)
3: dimecres (dc)
4: dijous (dj)
5: divendres (dv)
6: dissabte (ds)
7: diumenge (dg)
A continuació d'aquest primer valor, la seqüència conté parelles d'enters que indiquen les hores i els minuts treballats en cadascun dels dies consecutius del mes:
En la il·lustració anterior, 3 indica que el mes comença en dimecres. La parella 8 1 correspon a 8 hores i 1 minut treballats aquest primer dimecres; 7 45 a 7 hores i 45 minuts de dijous, i així successivament.
Regles de còmput d'hores extres:
Qualsevol temps treballat en cap de setmana (dissabte o diumenge) es considera íntegrament com a hores extres.
De dilluns a divendres, només es consideren hores extres aquelles que sobrepassin les 8 hores de dedicació diària (per exemple, un dimecres amb 8 h i 1 min genera 0 h i 1 min extres; un divendres amb 9 h i 12 min genera 1 h i 12 min extres). A la primera setmana de l'exemple, el volum d'extres és de 8 hores i 82 minuts.
Tingueu en compte el cas d'una seqüència buida (el primer valor és -1). Si no està buida, s'assegura que la informació és correcta i estructurada en parelles d'enters.
Tasques a resoldre: Dissenyeu l'algorisme en pseudocodi per calcular i mostrar:
El temps total mensual acumulat en format: El total d'hores treballades és: X hores i Y minuts.
La mitjana setmanal d'hores treballades, prenent com a referència que el mes té 4 setmanes: La mitjana d'hores per setmana és: M hores/setmana.
L'import consolidat d'hores extres a retribuir, arrodonint el temps restant sempre a l'alça (sostre enter en benefici del treballador). Per exemple, 34 hores i 132 minuts extres equivalen a 36 hores i 12 minuts, que s'arrodoneixen a 37 hores: Total d'hores extres a abonar: H hores extres.
El sou net mensual obtingut a partir de les constants globals PREU_HORA i PREU_HORA_EXTRA: El sou net del mes és: S euros.

Solución
Según los criterios oficiales de corrección
Dissenyeu l'algorisme en pseudocodi per calcular i mostrar: el temps total acumulat, la mitjana setmanal, les hores extres a retribuir arrodonides a l'alça i el sou net mensual.
Solución: ```pseudocode algorisme ControlHorariMensual constants PREU_HORA: real = 15.0 // valor exemplificatiu de la constant PREU_HORA_EXTRA: real = 22.5 // valor exemplificatiu de la constant FI_DADES: enter = -1 variables diaSetmana: enter hores, minuts: enter totMinutsTreballats, totMinutsExtres: enter horesTotals, minutsTotals: enter horesExtresNorm, minutsExtresNorm: enter horesExtresAbonar: enter mitjanaSetmanal: real souTotal: real inici llegir(diaSetmana) totMinutsTreballats ← 0 totMinutsExtres ← 0 si diaSetmana ≠ FI_DADES llavors llegir(hores) mentre hores ≠ FI_DADES fer llegir(minuts) // 1. Acumulació del total de temps treballat en minuts totMinutsTreballats ← totMinutsTreballats + (hores * 60 + minuts) // 2. Discriminació d'hores extres segons el dia de la setmana si diaSetmana = 6 o diaSetmana = 7 llavors // Cap de setmana: tot el temps compta com a extra totMinutsExtres ← totMinutsExtres + (hores * 60 + minuts) sino // Dilluns a divendres: excés sobre les 8 hores (480 minuts) si (hores * 60 + minuts) > 480 llavors totMinutsExtres ← totMinutsExtres + ((hores * 60 + minuts) - 480) fi si fi si // Avançar al següent dia de la setmana (cicle de l'1 al 7) diaSetmana ← (diaSetmana mod 7) + 1 // Següent lectura llegir(hores) fi mentre fi si // a) Format hores i minuts totals treballats horesTotals ← totMinutsTreballats div 60 minutsTotals ← totMinutsTreballats mod 60 escriure("El total d'hores treballades és: ", horesTotals, " hores i ", minutsTotals, " minuts.") // b) Mitjana d'hores per setmana (4 setmanes) mitjanaSetmanal ← (totMinutsTreballats / 60.0) / 4.0 escriure("La mitjana d'hores per setmana és: ", mitjanaSetmanal, " hores/setmana.") // c) Hores extres a abonar arrodonides a l'alça a favor de l'empleat horesExtresNorm ← totMinutsExtres div 60 minutsExtresNorm ← totMinutsExtres mod 60 si minutsExtresNorm > 0 llavors horesExtresAbonar ← horesExtresNorm + 1 sino horesExtresAbonar ← horesExtresNorm fi si escriure("Total d'hores extres a abonar: ", horesExtresAbonar, " hores extres.") // d) Càlcul del sou mensual souTotal ← ((totMinutsTreballats - totMinutsExtres) / 60.0) * PREU_HORA + horesExtresAbonar * PREU_HORA_EXTRA escriure("El sou net del mes és: ", souTotal, " euros.") fi algorisme ```
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.
Exercici 2 · Examen Parcial 1. Elements bàsics: Recorregut i cerca ›