Exercici 2 - Apartats a i b · Fundamentos de Programación I URV 2023

Tema: Taules unidimensionals i bidimensionals · Del examen Examen Segona Convocatòria 2023-2024 (2023)

Enunciado

Exercici 2 (8 punts). El passatemps de la sopa numèrica

Una variant numèrica de la clàssica sopa de lletres consisteix en una matriu de dígits on cal localitzar seqüències de nombres contigus la suma dels quals equivalgui a un valor prefixat conegut com a suma màgica. En aquesta versió simplificada, les cadenes només es troben disposades en sentit vertical (de dalt cap a baix) i deuen estar formades per com a mínim 3 dígits consecutius.

Cal dissenyar la fase inicial del programa: generació del tauler a partir d'un fitxer de dades, recompte del total de tires verticals que compleixen l'objectiu i presentació per pantalla tant de la matriu com de les pistes (nombre total de tires i suma màgica).

El tauler té una capacitat màxima de 20 files i 25 columnes. Es disposa dels següents subprogrames de suport (ja implementats, no s'han de programar):

funció inicialitzar_sopa(var taula: matriu, max_f: enter, max_c: enter, var f_reals: enter, var c_reals: enter): enter

Carrega les dades des del fitxer extern a la taula. Retorna 0 si l'operació té èxit o -1 si es produeix un error (per exemple, fitxer inexistent).

acció mostrar_sopa(taula: matriu, f_reals: enter, c_reals: enter)

Mostra per pantalla la graella numèrica.

Tasca a desenvolupar:

a)

Dissenyar la funció trobar_suma_col d'acord amb la capçalera:

funció trobar_suma_col(taula[][MAX_COL]: enter, col: enter, num_fils: enter, f_inici: enter, suma_obj: enter, var f_final: enter): booleà Comprova si, a la columna especificada i començant a la fila f_inici, existeix una seqüència vertical de 3 o més xifres que sumi exactament suma_obj. Retorna cert i la posició final de la fila a f_final en cas afirmatiu; en cas contrari, retorna fals.

b)

Dissenyar la funció calcular_tires_vertical amb la seva capçalera i codi complet. Ha d'avaluar tota la matriu per a retornar el còmput global de tires vàlides existents, recolzant-se en trobar_suma_col.

Enunciado: Exercici 2 - Apartats a i b · Fundamentos de Programación I URV 2023

Solución

Según los criterios oficiales de corrección

a. Dissenyar la funció trobar_suma_col d'acord amb la capçalera

Solución: ```pseudocode funció trobar_suma_col(tauler: taula[][MAX_COL] de enters, columna: enter, files_totals: enter, fila_origen: enter, valor_suma: enter, sortida fila_desti: enter): booleà variables pos: enter acumulat: enter longitud: enter es_trobat: booleà aturar: booleà inici acumulat ← 0 longitud ← 0 es_trobat ← fals aturar ← fals pos ← fila_origen mentre (pos < files_totals) i (no es_trobat) i (no aturar) fer acumulat ← acumulat + tauler[pos][columna] longitud ← longitud + 1 si acumulat < valor_suma llavors pos ← pos + 1 sino si (acumulat = valor_suma) i (longitud >= 3) llavors es_trobat ← cert fila_desti ← pos sino aturar ← cert fisi fisi fimentre retornar es_trobat fi_funció ```

b. Dissenyar la funció calcular_tires_vertical amb la seva capçalera i codi complet

Solución: ```pseudocode funció calcular_tires_vertical(tauler: taula[][MAX_COL] de enters, f_efectives: enter, c_efectives: enter, suma_magica: enter): enter variables c, f: enter total_tires: enter pos_final_ignorable: enter inici total_tires ← 0 per cada c des de 0 fins a c_efectives - 1 fer per cada f des de 0 fins a f_efectives - 1 fer si trobar_suma_col(tauler, c, f_efectives, f, suma_magica, pos_final_ignorable) llavors total_tires ← total_tires + 1 fisi fi_per fi_per retornar total_tires fi_funció ```

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 1.c.2-1.c.3 - Taules unidimensionals i… · 2015 ›

Más ejercicios de Taules unidimensionals i bidimensionals