El objetivo en este examen será modificar dos aspectos de tu solución de la práctica. Concretamente deberás
Los detalles están descritos con precisión en el documento enunciado_examen.pdf que forma parte del archivo public.tar que puedes descargar en esta página (icono del gatito). Verás que tendrás que modificar elementos ya existentes en tu práctica, tanto del main como de algunas clases.
IMPORTANTE: Este problema de Jutge es el único canal disponible para realizar la entrega del examen de la práctica. Ten en cuenta que
Observación Recomendamos que hagas una copia “limpia” de tu práctica en un subdirectorio aparte y en esa copia lleves a cabo todos los cambios.
Verifica que todos los módulos compilan sin errores, que el proceso de montaje da un archivo ejecutable correcto y que el program.exe pasa el juego de pruebas público suministrado.
Comprueba que tu Makefile genera el fichero program.exe y crea el fichero .tar para hacer el envío al Jutge. Asegúrate que entregas el fichero .tar con la solución del examen, no la solución original. No es necesario incluir la carpeta con la documentación en Doxygen ni, en su caso, la de la competencia tranversal.
El Jutge prueba tus entregas mediante 4 juegos de pruebas que, salvo por un comando que cambia ligeramente, tienen la misma sintaxis que los de la práctica.
En un fichero llamado practica.tar debes entregar
Ten en cuenta las siguientes restricciones:
Produce el fichero practica.tar con la instrucción Linux
tar -cvf practica.tar fitxer1 fitxer2 fitxer3 ...
desde el directorio/carpeta donde tengas los ficheros que vas a entregar. Incluye esta instrucción en tu Makefile, de forma que el .tar se pueda generar ejecutando make practica.tar. Con eso reduciras el riesgo de error en sucesivas entregas. El Jutge no acepta .tar donde los ficheros estén dentro de carpetas. Recomendamos usar GNU tar para reducir el riesgo de que el fichero practica.tar sea incompatible con el Jutge.
Input
6 abc abc BASE_ADN GATC BASE_ARN ACGU minusculas abcdefghijklmnopqrstuvwxyz full_interv !"#$%&'()*+,-./0123456789:;<=>?@ABCDEFGHIJKLMNOPQRSTUVWXYZ[\]^_`abcdefghijklmnopqrstuvwxyz{|}~ full_no_interv ABCDEFGHIJKLMNOPQRSTUVWXYZ[\]^_`abcdefghijklmnopqrstuvwxyz{|}~ !"#$%&'()*+,-./0123456789:;<=>?@ 8 hell minusculas dont worry if there is a hell below we are all going to go Resistire full_interv Cuando pierda todas las partidas / Cuando duerma con la soledad / Cuando se me cierren las salidas / Y la noche no me deje en paz. Qualsevol_nit full_interv Fa una nit clara i tranquila, hi ha la lluna que fa llum / Els convidats van arribant i van omplint tota la casa / De colors i de perfums. DNA_string_1 BASE_ADN ATGGCATTAATGGCATTAATGGCATTA DNA_string_2 BASE_ADN CATTAATGGCATTACATTAATGGCATTA RNA_string_1 BASE_ARN AAGAUGCCGUAAGAUGCCGUAAGAUGCCGU Contrato_frances_1 full_interv Le contrat d'ouverture d'un livret A prevu a l'article R. 221-1 rappelle les memes exigences ainsi que les sanctions encourues a raison de leur meconnaissance. Il informe egalement le client des modalites selon lesquelles s'effectue la procedure de verification prevue a l'article L. 221-38 Assembler1 full_interv switch_to_pm: / cli / lgdt [gdt_descriptor] / mov eax, cr0 / or eax, 1 / mov cr0,eax / jmp CODE_SEG:init_pm // Let's start with / cli. This instruction basically disables interrupts. We have to do this, because if an interrupt fires while we are in protected mode, but before we have installed the IDT, the CPU will triple fault and reset. The problem is, there is literally no standard C code that emits this instruction, so we are going to have to use inline assembly here. The same applies to lgdt [gdt_descriptor] listar_alfabetos listar_mensajes nuevo_mensaje Contrato_frances_2 full_no_interv Le contrat d'ouverture d'un livret A prevu a l'article R. 221-1 rappelle les memes exigences ainsi que les sanctions encourues a raison de leur meconnaissance. Il informe egalement le client des modalites selon lesquelles s'effectue la procedure de verification prevue a l'article L. 221-38 nuevo_mensaje RNA_string_2 BASE_ARN CCGUAAGAUGCCCCGUAAGAUGCC nm RNA_string_2 BASE_ARN AAGAUGCCCCGUAAGAUGCCCCGUCGU nm acb acb acb nuevo_alfabeto bca bca na abc abc borra_mensaje DNA_string_2 bm DNA_string_2 codificar_guardado hell 3 curtis mayfield cg Resistire 2 Duo Dinamico cg DNA_string_2 1 GGGG c minusculas 4 esto es una clave humanidad yo te amo porque estas todo el tiempo metiendo el secreto de la vida en tus pantalones y olvidando que estas alla y sentandote sobre el c mayusculas 3 CLAVE YO LA AME Y ELLA NO ME AMO YO LE DI MI ALMA Y ELLA SE BURLO d minusculas 4 esto es una clave lelomvm xymnbeduefqscvnhtmyerlvsusxvgdnprbsrmqokmxzmwrfndkwtebetpitdhswz mdhx ndptkowgdtaescnrgszk ofmzvtcasrnpr uddadmecodzbrry tponoidgjpqride d mayusculas 3 CLAVE Z FEBLMZD KEFPCKNIDOP VQQKYIDNP YMBXIUENXAUBBPLFEBCEUFWBLI codificar_guardado DNA_string_2 5 GAG cg RNA_string_2 100 GAU cg RNA_string_2 100 GAU codificar full_interv 20 clave clave !"#$%&'()*+,-./:;<=>?@[\]^_`{|}~*+,-./:;<=>?@[\]^_`{|}~ !"#$%&'()*+,-. c full_interv 20 clave clave !"#$%&'()*+,-./:;<=>?@[\]^_`{|}~*+,-./:;<=>?@[\]^_`{|}~ !"#$%&'()*+,-. decodificar full_interv 200 clave perm eYlG86U*6cAYv9 X6\=GoK95 T4f7@0EpeJy#TSg@WBeaRdl047E|';S4ieO`2`98 /@e3liv5H<!TVo d full_interv 200 clave perm eYlG86U*6cAYv9 X6\=GoK95 T4f7@0EpeJy#TSg@WBeaRdl047E|';S4ieO`2`98 /@e3liv5H<!TVo borra_alfabeto mayusculas ba BASE_ADN borra_mensaje DNA_string_1 borra_alfabeto BASE_ADN la lm fin ALEO A / \ L E \ O A / \ E L \ O AELO
Output
#listar_alfabetos 1. BASE_ADN normal "GATC" 2 mensajes 2. BASE_ARN normal "ACGU" 1 mensajes 3. abc especial [a..c] 0 mensajes 4. full_interv especial [ ..~] 4 mensajes 5. full_no_interv normal "ABCDEFGHIJKLMNOPQRSTUVWXYZ[\]^_`abcdefghijklmnopqrstuvwxyz{|}~ !"#$%&'()*+,-./0123456789:;<=>?@" 0 mensajes 6. minusculas normal "abcdefghijklmnopqrstuvwxyz " 1 mensajes #listar_mensajes 1. Assembler1 full_interv "switch_to_pm: / cli / lgdt [gdt_descriptor] / mov eax, cr0 / or eax, 1 / mov cr0,eax / jmp CODE_SEG:init_pm // Let's start with / cli. This instruction basically disables interrupts. We have to do this, because if an interrupt fires while we are in protected mode, but before we have installed the IDT, the CPU will triple fault and reset. The problem is, there is literally no standard C code that emits this instruction, so we are going to have to use inline assembly here. The same applies to lgdt [gdt_descriptor]" 2. Contrato_frances_1 full_interv "Le contrat d'ouverture d'un livret A prevu a l'article R. 221-1 rappelle les memes exigences ainsi que les sanctions encourues a raison de leur meconnaissance. Il informe egalement le client des modalites selon lesquelles s'effectue la procedure de verification prevue a l'article L. 221-38" 3. DNA_string_1 BASE_ADN "ATGGCATTAATGGCATTAATGGCATTA" 4. DNA_string_2 BASE_ADN "CATTAATGGCATTACATTAATGGCATTA" 5. Qualsevol_nit full_interv "Fa una nit clara i tranquila, hi ha la lluna que fa llum / Els convidats van arribant i van omplint tota la casa / De colors i de perfums." 6. RNA_string_1 BASE_ARN "AAGAUGCCGUAAGAUGCCGUAAGAUGCCGU" 7. Resistire full_interv "Cuando pierda todas las partidas / Cuando duerma con la soledad / Cuando se me cierren las salidas / Y la noche no me deje en paz." 8. hell minusculas "dont worry if there is a hell below we are all going to go" #nuevo_mensaje Contrato_frances_2 full_no_interv 9 #nuevo_mensaje RNA_string_2 BASE_ARN 10 #nm RNA_string_2 BASE_ARN error: ya existe un mensaje con ese identificador #nm acb acb error: el alfabeto no existe #nuevo_alfabeto bca 7 #na abc error: el alfabeto ya existe #borra_mensaje DNA_string_2 9 #bm DNA_string_2 error: el mensaje no existe #codificar_guardado hell "curtis mayfield" 3 "fdhlnhnrcvqejwkjhyx hralxmmpcwdbygrdv qymwdolnxtgeqftlloes" #cg Resistire "Duo Dinamico" 2 "gkQn)YnRWOVT&udo)KbaZKWo5Wbt.NPUmxc3:W^d4iSWS\QQDY_nDVPaaYPU)WT Si2WOXH_DiU 2OnEWOVb*dol&]nUOVMT&io/DCnNOiR_(^U 3YnOSiHU/[oe3i_Chw" #cg DNA_string_2 "GGGG" 1 error: el mensaje no existe #c minusculas "esto es una clave" 4 "lelomvm xymnbeduefqscvnhtmyerlvsusxvgdnprbsrmqokmxzmwrfndkwtebetpitdhswz mdhx ndptkowgdtaescnrgszk ofmzvtcasrnpr uddadmecodzbrry tponoidgjpqride" #c mayusculas "CLAVE" 3 error: el alfabeto no existe #d minusculas "esto es una clave" 4 "humanidad yo te amo porque estas todo el tiempo metiendo el secreto de la vida en tus pantalones y olvidando que estas alla y sentandote sobre el" #d mayusculas "CLAVE" 3 error: el alfabeto no existe #codificar_guardado DNA_string_2 "GAG" 5 error: el mensaje no existe #cg RNA_string_2 "GAU" 100 "UUAUACACCAGACAACCUCAGAAC" #cg RNA_string_2 "GAU" 100 "UUAUACACCAGACAACCUCAGAAC" #codificar full_interv "clave clave" 20 "coiiy%cis mtnx%n)~:~5^D>HT$D_h%mmdwt/s$}(C=#$-4CS^}bs]cMxblh$m~hrnh$mws" #c full_interv "clave clave" 20 "coiiy%cis mtnx%n)~:~5^D>HT$D_h%mmdwt/s$}(C=#$-4CS^}bs]cMxblh$m~hrnh$mws" #decodificar full_interv "clave perm" 200 ""Si PUEDES leer ESTO, con COMILLAS y mayusculas ABSURDAS, vas MAS o MENOS bien."" #d full_interv "clave perm" 200 ""Si PUEDES leer ESTO, con COMILLAS y mayusculas ABSURDAS, vas MAS o MENOS bien."" #borra_alfabeto mayusculas error: el alfabeto no existe #ba BASE_ADN error: hay mensajes guardados con el alfabeto #borra_mensaje DNA_string_1 8 #borra_alfabeto BASE_ADN 6 #la 1. BASE_ARN normal "ACGU" 2 mensajes 2. abc especial [a..c] 0 mensajes 3. bca normal "bca" 0 mensajes 4. full_interv especial [ ..~] 4 mensajes 5. full_no_interv normal "ABCDEFGHIJKLMNOPQRSTUVWXYZ[\]^_`abcdefghijklmnopqrstuvwxyz{|}~ !"#$%&'()*+,-./0123456789:;<=>?@" 1 mensajes 6. minusculas normal "abcdefghijklmnopqrstuvwxyz " 1 mensajes #lm 1. Assembler1 full_interv "switch_to_pm: / cli / lgdt [gdt_descriptor] / mov eax, cr0 / or eax, 1 / mov cr0,eax / jmp CODE_SEG:init_pm // Let's start with / cli. This instruction basically disables interrupts. We have to do this, because if an interrupt fires while we are in protected mode, but before we have installed the IDT, the CPU will triple fault and reset. The problem is, there is literally no standard C code that emits this instruction, so we are going to have to use inline assembly here. The same applies to lgdt [gdt_descriptor]" 2. Contrato_frances_1 full_interv "Le contrat d'ouverture d'un livret A prevu a l'article R. 221-1 rappelle les memes exigences ainsi que les sanctions encourues a raison de leur meconnaissance. Il informe egalement le client des modalites selon lesquelles s'effectue la procedure de verification prevue a l'article L. 221-38" 3. Contrato_frances_2 full_no_interv "Le contrat d'ouverture d'un livret A prevu a l'article R. 221-1 rappelle les memes exigences ainsi que les sanctions encourues a raison de leur meconnaissance. Il informe egalement le client des modalites selon lesquelles s'effectue la procedure de verification prevue a l'article L. 221-38" 4. Qualsevol_nit full_interv "Fa una nit clara i tranquila, hi ha la lluna que fa llum / Els convidats van arribant i van omplint tota la casa / De colors i de perfums." 5. RNA_string_1 BASE_ARN "AAGAUGCCGUAAGAUGCCGUAAGAUGCCGU" 6. RNA_string_2 BASE_ARN "CCGUAAGAUGCCCCGUAAGAUGCC" 7. Resistire full_interv "Cuando pierda todas las partidas / Cuando duerma con la soledad / Cuando se me cierren las salidas / Y la noche no me deje en paz." 8. hell minusculas "dont worry if there is a hell below we are all going to go"