Examen de Programació I UDL 2022 · Primer Parcial (Novembre 2022)

Examen de Programació I de la UDL (Grado en Ingeniería Informática) 2022, Primer Parcial (Novembre 2022): 3 problemas con solución. Con corrección al momento.

Temas del examen: Bucles i disseny iteratiu

Problema 1 · Bucles i disseny iteratiu

Problema 1 (2 punts). Traça d'execució de codi

Considereu el fragment següent en llenguatge C++, compilat amb els paràmetres -ansi i -Wall:

#include <stdio.h>

int main ()

{

int x, y;

printf ("Introdueix el valor de x: ");

scanf ("%d", &x);

printf ("Introdueix el valor de y: ");

scanf ("%d", &y);

while (0 < y)

{

if (y%2 == 1)

{

x*=2;

}

y--;

}

printf ("x = %d, ", x);

printf ("y = %d.\n", y);

return 0;

}

Indiqueu quina sortida exacta es mostra per pantalla per a cadascuna de les parelles de valors d'entrada següents:

a)

x=3x = 3, y=8y = 8

b)

x=−2x = -2, y=9y = 9

c)

x=5x = 5, y=5y = 5

d)

x=7x = 7, y=−2y = -2

Problema 2 · Bucles i disseny iteratiu

Problema 2 (3,5 punts). Càlcul dels divisors comuns de dos enters positius

Dissenyeu un programa en llenguatge C++ que demani per teclat dos nombres enters positius, a>0a > 0 i b>0b > 0. En cas que l'usuari introdueixi un valor negatiu o zero, cal mostrar un missatge d'error i tornar a sol·licitar la introducció de les dades fins que siguin correctes.

Un cop validats els valors, el programa ha d'imprimir per pantalla tots els divisors comuns de aa i bb, és a dir, tots els nombres que compleixin simultàniament:

Són enters estrictament positius.

Són menors o iguals que aa i que bb.

Divideixen de forma exacta tant a aa com a bb (és a dir, el residu de la divisió és zero).

Exemples d'execució:

Si a=25a = 25 i b=125b = 125, la sortida ha de ser: 1 5 25

Si a=24a = 24 i b=36b = 36, la sortida ha de ser: 1 2 3 4 6 12

Si a=25a = 25 i b=81b = 81, la sortida ha de ser: 1

Escriviu un codi estructurat, clar i acompanyat de comentaris aclaridors.

Problema 3 · Bucles i disseny iteratiu

Problema 3 [4,5 punts]. Processament de seqüència i representació d'un tauler SAT

Dissenyeu un programa en llenguatge C++ que processi un text acabat amb el caràcter punt ( '.'). El programa ha de cercar la primera aparició de la lletra 'v'. Si es troba aquest caràcter, a continuació es llegirà una seqüència de 16 nombres enters (seguits d'un 0 i del punt final, els quals es poden ignorar).

Per a cadascun d'aquests 16 nombres:

Si el valor és negatiu, s'imprimeix un caràcter de subratllat seguit d'un espai ( "_ ").

Si el valor és positiu, s'imprimeix la lletra 'Q' seguida d'un espai ( "Q ").

Cal afegir un salt de línia cada quatre valors impresos (formant una matriu de 4 files per 4 columnes).

En cas que el caràcter punt arribi sense haver trobat cap 'v' en el text, el programa ha d'imprimir el missatge:

No té solució.

Exemples:

Exemple 1:

Entrada:

s SATISFIABLE

v -1 -2 3 -4 5 -6 -7 -8 -9 -10 -11 12 -13 14 -15 -16 0

.

Sortida:

_ _ Q _

Q _ _ _

_ _ _ Q

_ Q _ _

Exemple 2:

Entrada:

s UNSATISFIABLE

.

Sortida:

No té solució.

También puedes estudiar por temas

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

Ver los 1 temas