Exercici 4 · Fundamentos de Programación I URV Examen Final. Fonaments de Programació I

Tema: Disseny del programa principal i resolució integrada de problemes · Del examen Examen Final. Fonaments de Programació I

Enunciado

Context

Context de l'examen: Prova final d'avaluació. Es treballa amb els registres horaris de temperatures de la ciutat de Tarragona durant un mes.

Les dades es guarden en una estructura bidimensional de nombres reals amb un màxim de 32 files (la fila 0 es destina al còmput de mitjanes i de la 1 a la 31 als dies naturals) i 24 columnes (de 0 a 23 hores). Es compta d'origen amb una funció de càrrega prèviament programada amb la capçalera:

funció inicialitzar_temperatures (nom_mes: taula[] de caràcter, var temp: taula[][MAX_HORES] de reals, max_fil: enter, max_col: enter, var num_dies_mes: enter) retorna booleà Aquesta funció llegeix el fitxer del mes sol·licitat, omple la matriu, actualitza el nombre de dies vàlids i retorna cert si l'operació ha reeixit o fals si el nom era erroni.

Exercici 4 (3,5 punts). Algorisme complet d'anàlisi de dades mensuals

Dissenyeu l'algorisme principal d'aplicació que integri els subprogrames previs per dur a terme una anàlisi tèrmica exhaustiva d'un mes:

Ha de demanar a l'usuari el mes que es vol processar. Si la rutina de càrrega indica que el nom no és vàlid, s'ha de repetir la petició reiteradament fins que sigui acceptat.

Un cop carregades les dades, s'ha de mostrar per pantalla:

El valor mitjà calculat per a cada hora al llarg del mes.

El primer dia amb dues hores consecutives negatives o bé el missatge: "No s'ha trobat cap dia amb dues hores consecutives amb temperatures negatives".

La jornada en què es produeix la major oscil·lació tèrmica (màxima diferència entre el registre més alt i el més baix d'aquell mateix dia).

Enunciado: Exercici 4 · Fundamentos de Programación I URV Examen Final. Fonaments de Programació I

Solución

Según los criterios oficiales de corrección

Exercici 4. Algorisme complet d'anàlisi de dades mensuals

Solución: ```pseudocode algorisme analisi_temperatures const MAX_HORES ← 24 MAX_DIES ← 32 // 31 jornades possibles + fila 0 de mitjanes MAX_MES ← 9 // Longitud del text del mes (8 caràcters + terminador) fconst var taula_temps: taula[MAX_DIES][MAX_HORES] de reals etiqueta_mes: taula[MAX_MES] de caràcter n_dies_reals, dia_idx, dia_negatiu, dia_oscil_max: enter es_valid: booleà diferencia_max, limit_sup, limit_inf: real fvar inici // Validació i lectura de la informació d'entrada fer escriure("Introdueix el nom del mes a analitzar") llegir(etiqueta_mes) es_valid ← inicialitzar_temperatures(etiqueta_mes, taula_temps, MAX_DIES, MAX_HORES, n_dies_reals) si (no es_valid) llavors escriure("El mes introduït és invàlid") fsi mentre (no es_valid) // 1. Obtenció i presentació de mitjanes per franja horària calcular_mitjana_temperatures_totes_hores(taula_temps, n_dies_reals, MAX_HORES) per dia_idx ← 0 fins MAX_HORES - 1 fer escriure("Mitjana de la franja ", dia_idx, ": ", taula_temps[0][dia_idx]) fper // 2. Detecció d'hores consecutives sota zero dia_negatiu ← comprovar_temperatures_negatives(taula_temps, n_dies_reals, MAX_HORES) si (dia_negatiu ≠ -1) llavors escriure("El primer dia amb 2 hores seguides sota zero és: ", dia_negatiu) sino escriure("No s'ha trobat cap dia amb dues hores consecutives amb temperatures negatives") fsi // 3. Càlcul del dia amb més rang de variació tèrmica diferencia_max ← 0.0 dia_oscil_max ← 1 per dia_idx ← 1 fins n_dies_reals fer max_min_temperatura_dia(taula_temps, MAX_HORES, dia_idx, limit_sup, limit_inf) si (limit_sup - limit_inf > diferencia_max) llavors diferencia_max ← limit_sup - limit_inf dia_oscil_max ← dia_idx fsi fper escriure("El dia amb la màxima oscil·lació entre màxim i mínim ha estat: ", dia_oscil_max) 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.

‹ Exercici 1 · 2013

Más ejercicios de Disseny del programa principal i resolució integrada de problemes