Examen de Fundamentos de Programación I URV 2023 · Segona Convocatòria 2023-2024

Examen de Fundamentos de Programación I de la URV (Grado en Ingeniería Informática) 2023, Segona Convocatòria 2023-2024: 3 problemas con solución. Gratis.

Temas del examen: Taules unidimensionals i bidimensionals · Tipus definits per l'usuari: registres i taules de registres · Disseny del programa principal i resolució integrada de problemes

Exercici 1 · Tipus definits per l'usuari: registres i taules de registres

Exercici 1 (2 punts). Gestió de colors en l'espai RGB

En el tractament d'imatges digitals s'empra habitualment el patró de color RGB (acrònim de red, green, blue). Qualsevol píxel s'expressa mitjançant la combinació de les tres tonalitats bàsiques de llum: vermell, verd i blau. La intensitat de cada canal es quantifica de forma entera entre el 0 (absència de llum) i el 255 (intensitat màxima).

Es demana resoldre els següents apartats:

a)

Definir una estructura o registre anomenat color_t per a contenir els tres canals de color esmentats.

b)

Construir un subprograma (acció o procediment) que interactuï amb l'usuari per a omplir una variable del tipus color_t a través del teclat. L'acció ha de validar estrictament que cada valor estigui comprès en l'interval [0, 255]. En cas contrari, ha d'avisar de l'errada i reiterar la petició fins a obtenir una dada vàlida. L'elecció dels paràmetres és lliure.

c)

Implementar l'algorisme principal que, fent servir l'acció anterior, sol·liciti un color, determini la seva luminància o to gris equivalent (com a nombre enter) i imprimeixi el resultat obtingut segons el format d'exemple següent:

Per al color RGB: (25, 56, 125) li correspon el gris 54

La conversió a escala de grisos es regeix per la fórmula ponderada:

gris=0,3⋅vermell+0,59⋅verd+0,11⋅blau\text{gris} = 0{,}3 \cdot \text{vermell} + 0{,}59 \cdot \text{verd} + 0{,}11 \cdot \text{blau}

Exercici 2 - Apartats a i b · Taules unidimensionals i bidimensionals

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.

Exercici 2 - Apartat c · Disseny del programa principal i resolució integrada de problemes

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:

c)

Elaborar l'algorisme principal que coordini la inicialització, la sol·licitud de la suma màgica per teclat, la crida a les funcions anteriors i la impressió dels resultats, gestionant la possible fallada en carregar el tauler.

También puedes estudiar por temas

Practica un tema con ejercicios de los exámenes de todos los años, mezclados.

Ver los 7 temas