Exercici 1 · Fundamentos de Programación I URV 2023
Tema: Tipus definits per l'usuari: registres i taules de registres · Del examen Examen Segona Convocatòria 2023-2024 (2023)
Enunciado
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:

Solución
Según los criterios oficiales de corrección
a. Definir una estructura o registre anomenat color_t per a contenir els tres canals de color esmentats.
Solución: ```pseudocode tipus color_t: registre r: enter g: enter b: enter fi_registre ```
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].
Solución: ```pseudocode // Paràmetre de sortida amb el registre omplert acció obtenir_color(sortida dades_color: color_t) inici // Lectura protegida de la component vermella repetir escriure("Introduïu el valor del canal vermell [0-255]: ") llegir(dades_color.r) si (dades_color.r < 0) o (dades_color.r > 255) llavors escriure("Avís: valor fora de rang.") fisi fins_que (dades_color.r >= 0) i (dades_color.r <= 255) // Lectura protegida de la component verda repetir escriure("Introduïu el valor del canal verd [0-255]: ") llegir(dades_color.g) si (dades_color.g < 0) o (dades_color.g > 255) llavors escriure("Avís: valor fora de rang.") fisi fins_que (dades_color.g >= 0) i (dades_color.g <= 255) // Lectura protegida de la component blava repetir escriure("Introduïu el valor del canal blau [0-255]: ") llegir(dades_color.b) si (dades_color.b < 0) o (dades_color.b > 255) llavors escriure("Avís: valor fora de rang.") fisi fins_que (dades_color.b >= 0) i (dades_color.b <= 255) fi_acció ```
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.
Solución: ```pseudocode algorisme conversio_a_gris variables c: color_t valor_gris: enter inici obtenir_color(c) valor_gris ← part_entera(0.3 * c.r + 0.59 * c.g + 0.11 * c.b) escriure("Per al color RGB: (", c.r, ", ", c.g, ", ", c.b, ") li correspon el gris ", valor_gris) 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.
Ejercicio 1.a - Tipus definits per l'usuari: regi… · 2015 ›