Bole ´
ın de P oblemas de Me odolog´
ıa
y Tecnolog´
ıa de la P og amaci´
on,
IS04
Cu so 2006/2007
16 de oc ub e de 2006
1
Cap´
ı ulo 2: Concep os B´
asicos
1. Se dispone de dos a iables, xey. No impo a de qu´
e ipo son. Hay que esc ibi un algo i mo
que pe mi a que in e cambien sus alo es.
2. Sabiendo que x,yyzson a iables del mismo ipo, con alo es dis in os dos a dos, analiza
la siguien es secuencias de ins ucciones e indica en cu´
ales a ´
ıa el esul ado si se in ie e el
o den de ejecuci´
on. Po ejemplo, si a ´
ıa o no el esul ado si se ejecu a la secuencia
x=y
z=xo la in e sa z=x
x=y
(a)x=y
z=y
(b)x=y
y=x
(c)x=x+y
z=x+y
(d)y=x+y
z=x+z
3. Esc ibi un algo i mo que, dados es alo es de ipo eal, pe mi a calcula su media a i m´
e ica.
4. Dise˜
na un algo i mo que pe mi a pasa una can idad de iempo exp esada en segundos al
o ma o ho as, minu os y segundos.
5. Sabiendo que el p ecio de en a al p´
ublico de un a ´
ıculo engloba su p ecio de cos e y las
siguien es epe cusiones,
Gas os de come cializaci´
on, es imados en un 20 % sob e el p ecio de cos e,
Gas os Gene ales, pe sonal, publicidad ... es imados en un 75 % sob e el p ecio de cos e,
Impues os, que epe cu en un 1.5 % sob e el p ecio de cos e,
Y al esul ado del p ecio ob enido, a˜
nadi le un 0.7 % sob e el p ecio esul an e como
apo aciones a ONGs,
esc ibi un algo i mo que, conociendo el p ecio de cos e, pe mi a de e mina el p ecio de en a
al p´
ublico inal.
6. Esc ibi un algo i mo que pe mi a de e mina la soluci´
on de una ecuaci´
on de p ime g ado, ax
+ b = c.
7. Esc ibi un algo i mo que, dado un alo de ipo eal, pe mi a calcula el ´
a ea del cuad ado
cuyo lado iene esa medida.
8. Esc ibi un algo i mo que, dado un alo de ipo eal que ep esen a el ´
a ea de un c´
ı culo,
pe mi a calcula el pe ´
ıme o de su ci cun e encia.
Cap´
ı ulo 3: P og amaci´
on Es uc u ada
1. Sean a y b dos a iables en e as con alo es 3 y 5, espec i amen e. Indica si las siguien es
condiciones son cie as o alsas:
a + b < 10
!((a + b) <= 10)
a >= 2 && b >= 5
a < 10 || (a > 0 && b < 0)
a > 0 && (b < 2 || !(b > 5))
a < 5 && b < 8
!(a >= 5 || b >= 8)
2. Sean A, B, C y D a iables en e as. Se conside a la secuencia
i (((A >0) || (B >C)) && ((D >A) || (D <5))) {
A=0;
D=B+C;
}
else {
C=A-B;
i (C <0){
D = -D ;
}
B = 0 ;
}
De e mina los alo es inales pa a las a iables, sabiendo las siguien es posibilidades de a-
lo es iniciales:
a) A = 5, B = 3, C = 4, D = 6
b) A = -1, B = 3, C = 4, D = 3
c) A = -1, B = -2, C = 4, D = 3
3. Sean X, Y y S a iables en e as. Dada la secuencia
i (X < 0)
S=1;
else
i (Y > 0)
S = 1 ;
else
S=0;
esc ibi una secuencia equi alen e, sin anidamien o de condicionales y sin epe i la ins uc-
ci´
on S = 1.
4. Dada la secuencia
i (p && q)
a ;
else
s ;
3
donde pyqson p edicados elemen ales y aysson acciones, esc ibi una secuencia equi a-
len e, en la que s´
olo se e al´
ue cada ez un p edicado elemen al.
5. ¿Son equi alen es las es secuencias siguien es?
s=0;
i (p) {
s=3;
}
else {
i (!q) {
s=3;
}
}
s=0;
i (!(!p&&q)) {
s=3;
}
s=0;
i (p || !(q)) {
s=3;
}
6. A, B y C son es a iables en e as. Esc ibi una secuencia de ins ucciones que de e mine cu´
al
es la a iable de mayo alo y de uel a el esul ado en una a iable MAX.
7. Dados es alo es en e os A, B y C, esc ibi una secuencia de ins ucciones que los o dene en
o den c ecien e.
8. Las siguien es secuencias hacen lo mismo, pe o ¿cu´
al es mejo y po qu´
e? (no a: los alo es
de a, b y c son dis in os dos a dos.)
i ((a>b) && (a>c)) {
max = a;
}
i ((b>a) && (b>c)) {
max = b;
}
i ((c>a) && (c>b)) {
max = c;
}
i ((a>b) && (a>c)) {
max = a;
}
else {
i ((b>a) && (b>c)) {
max = b;
}
else {
i ((c>a) && (c>b)) {
max = c;
}
}
}
9. Dado el siguien e agmen o de c´
odigo, eesc ibi lo u ilizando un ´
unico condicional, que
adem´
as es ´
e simpli icado al m´
aximo:
i (b < 10) {
i (b >= 5)
a=a*2;
i (b < 5) {
i (b >= 0)
a = a*2;
}
}
10. Esc ibi una secuencia de ins ucciones que de e mine a cu´
an o asciende la ac u a de la luz
de un abonado. Pa a ello, se conoce AI, an iguo ´
ındice y NI, nue o ´
ındice, que ep esen an los
alo es le´
ıdos en el con ado de la luz. El esul ado se quie e sob e la a iable IMPORTE, que
se calcula sabiendo que un abonado
a) Paga 5 eu os po gas os ijos de con a o,
b) El consumo se de e mina po amos: los p ime os 100 Kws, a 5 c´
en imos el Kw; los 150
Kws siguien es, a 3 c´
en imos el Kw; si el consumo excede de 250 Kws, esa acci´
on se
cob a a 2 c´
en imos el Kw.
4
11. Reesc ibi la siguien e secuencia en o ma de un ´
unico condicional egido po un p edicado
compues o, an simple como sea posible. Jus i ica odos los cambios ealizados.
i (a > b)
i (b-a > 0)
a=a+1;
else
i (x > a)
i (x > b)
i ((2*x) > (a+b))
x = 0;
else
i (x < 100)
x = 1;
12. Simpli ica al m´
aximo las siguien es secuencias, jus i icando las acciones ealizadas, sabiendo
que las a iables X, Y, I y K, son en e as:
i (X>0) {
I=I+2;
K=0;
Y=2*X;
}
else {
I=I+2;
K=0;
Y=0;
}
i (X==3) {
X=Y;
Y=0;
I=X+Y;
}
else {
X=Y;
Y=K*2;
I=X+Y;
}
13. Las secuencias siguien es ¿hacen lo mismo?
s=0;
x=a;
s=b;
i (x>=c) {
x=x%c;
}
else {
x=x+1;
}
s=b;
i (x>=c) {
x=a;
x=x%c;
}
else {
x=a;
x=x+1;
}
14. ¿Ve dade o o Falso (jus i ica )?: La ejecuci´
on de cada una de las dos secuencias siguien es es
exac amen e igual.
i ( <V1) {
<ins 1>;
}
else {
i ( >V2) {
<ins 2>;
}
}
i ( <V1) {
<ins 1>;
}
i ( >V2) {
<ins 2>;
}
15. An es de ejecu a se el siguien e agmen o de c´
odigo se cumple el p edicado
/* j <Nand acum == 0 */.
Analiza el agmen o e indica que ocu i ´
ıa al ejecu a lo:
5
i=j;
while (i<=N) {
i (j<i) {
i=i-1;
}
else {
i=i+1;
}
acum=acum+i*i;
}
16. Simpli ica al m´
aximo la secuencia siguien e, jus i icando adecuadamen e odos los cambios
ealizados:
/*x e y son a iables eales */
/*n, en e o, n=N>1 */
y = x;
o (i=1; i<=n; i=i+1){
i (i<n) {
y=i*x;
}
else {
y=2*x;
}
}
17. Dado el siguien e esquema condicional:
i (<cond1>){
i (<cond2>){
<ins 1>;
}
else {
i (<cond3>){
<ins 2>;
<ins 3>;
}
}
}
else {
i (<cond3>){
<ins 2>;
<ins 3>;
}
}
¿Es posible subs i ui lo po un ´
unico condicional? ¿Po qu´
e? Da una e si´
on equi alen e con
el meno n´
ume o posible de condicionales anidados.
18. Simpli ica al m´
aximo el siguien e condicional, sabiendo que a,b,cydson en e os:
6
a = 3;
i (a < 3) {
b=2*a;
}
else {
i (b > c) {
a=a+b;
b=b+c;
c=c+d;
}
else {
a=a+b;
b=b+c;
c=2*c;
c=c+d;
}
}
19. ¿Ve dade o o Falso (jus i ica )?: “Los dos condicionales siguien es siemp e p oduci ´
an los
mismos esul ados”,
i (p) {
<ins 1>;
}
else {
<ins 2>;
}
i (p) {
<ins 1>;
}
i (!p) {
<ins 2>;
}
20. ¿Ve dade o o Falso (jus i ica )?: “Los dos condicionales siguien es son equi alen es”,
i (p) {
o (j=k;j<=q;j++) {
b[i]=a[j];
i++;
}
}
else {
o (k=j;k<=m;k++) {
b[i]=a[k];
i++;
}
}
i (p) {
o (j=k;j<=q;j++) {
b[i]=a[j];
}
}
else {
o (k=j;k<=m;k++) {
b[i]=a[k];
}
}
i++;
21. Simpli ica al m´
aximo el siguien e condicional:
i (a>=b) {
a=a/2;
i (a>=c) {
a=a/2;
}
else {
a=a/2;
}
}
else {
a=a/2;
}
22. Dado el siguien e bucle, en el que iy son en e os,
7
/*n es un en e o, n>1 */
=1;
i=0;
while ( <n) {
= *2;
i=i+1;
}
indica pa a cada uno de los p edicados siguien es si puede se o no un in a ian e y po qu´
e:
a){2i<=n&& n>0}
b){n>0&& i<=log2n}
23. Simpli ica al m´
aximo la siguien e secuencia de c´
odigo:
/*P e: j==V1, V1 > 0 */
in aux, i;
aux=0;
i=0;
while (i<=j) {
i (i>=j) {
aux=aux+(i*j);
i=i+1;
}
else {
aux=i*j;
i=j;
}
}
p in (" %d n", aux);
}
24. Dada la a iable en e a NUM, que con iene un alo n ≥1, elabo a una secuencia de ins uc-
ciones que de e mine la suma de los np ime os n´
ume os na u ales.
25. Dado un en e o i, i >0, esc ibi una secuencia de ins ucciones que nos de uel a el meno
en e o n, al que 2n> i .
26. Esc ibi una secuencia de ins ucciones que de e mine el cocien e y el es o de la di isi´
on
en e a de dos n´
ume os en e os A y B. (No a: median e es as y sumas).
27. Esc ibi una secuencia de ins ucciones pa a calcula xn, siendo n un n´
ume o en e o.
28. Dado un alo n≥1, elabo a una secuencia de ins ucciones que calcule n!.
29. Esc ibi un p og ama que haga lo siguien e: Se i ´
an leyendo alo es eales po eclado y el
obje i o es de ec a secuencias.
Una secuencia es una se ie de n´
ume os consecu i os iguales. Po ejemplo, en la siguien e se ie
hay 6 secuencias:
0.25, 0.5, 0.5, 1.75, 0.1, 0.1, 0.1, 0.1, 0.15, 0.8, 0.8, 0.0
Cuando se lea el alo 0.0 inaliza la in oducci´
on de n´
ume os y se debe ´
a esc ibi cu´
an as
secuencias se han de ec ado.
30. La sucesi´
on de Fibonacci se ob iene de acue do a
ibonacci(n) =
1si n = 1,
1si n = 2,
ibonacci(n−1) + ibonacci(n−2) si n > 2
.
8
Esc ibi una secuencia de ins ucciones que calcule el n´
ume o de Fibonacci asociado a un
en e o n.
31. Esc ibi una secuencia de ins ucciones que pe mi a calcula el ´
e mino n de la sucesi´
on
s0= 1
s1= 1
s2= 1
sn=sn−2+sn−3, n ≥3.
Es deci , los es p ime os ´
e minos son 1, 1, 1; el siguien e se calcula sumando los ´
e minos
pen´
ul imo y an epen´
ul imo. Si, po ejemplo, n=12, los ´
e minos a calcula se ´
ıan: 1, 1, 1, 2, 2,
3, 4, 5, 7, 9, 12, 16, 21,... y hab ´
ıa que de ol e el alo 21.
32. Esc ibi una secuencia de ins ucciones que calcule el ´
e mino k-´
esimo de la sucesi´
on
T(0) = 1
T(1) = 1
T(n) = T(n−1) + (n−1) ∗T(n−2), n ≥2.
33. Esc ibi una secuencia de ins ucciones que con ie a una a iable en e a en o a, ambi´
en
en e a, en la que el en e o o iginal apa ezca del e ´
es. Po ejemplo, el en e o 357 se debe
con e i en el 753.
34. Esc ibi una secuencia de ins ucciones que dado un n´
ume o en e o lo eduzca a la suma de
sus d´
ıgi os, de o ma que el esul ado sea un n´
ume o de un s´
olo d´
ıgi o. Po ejemplo, dado el
n´
ume o 13674891,
13674891 →1 + 3 + 6 + 7 + 4 + 8 + 9 + 1 = 39 →3 + 9 = 12 →1 + 2 = 3
el esul ado pedido es 3.
35. Esc ibi una secuencia de ins ucciones que calcule la exponencial de un n´
ume o eal a, de
acue do a la se ie,
ea=
∞
$
n=0
an
n!= 1 + a+a2
2+a3
3! +a4
4! +. . . +an
n!+. . .
Ap oxima el esul ado has a que pa a alg´
un kse cumpla que ak/k!≤10−5.
36. Esc ibi una secuencia de ins ucciones que calcule la exponencial de aseg´
un la se ie del
p oblema 35, pe o ap oximando has a que k=20.
37. La unci´
on seno se puede calcula de acue do a la se ie
sin x=
∞
$
n=0
(−1)nx2n+1
(2n+ 1)! =x−x3
3! +x5
5! −x7
7! +. . .
mien as que pa a calcula la unci´
on coseno se u iliza la se ie,
cos x=
∞
$
n=0
(−1)nx2n
(2n)! = 1 −x2
2! +x4
4! −x6
6! +. . .
Dado un eal, x, esc ibi una secuencia de ins ucciones que calcule el seno y el coseno de x
simul ´
aneamen e u ilizando es as se ies y de la o ma m´
as e icien e posible. Se conside a ´
a una
ap oximaci´
on ´
alida que |sin2x+ cos2x−1|sea meno que 10−6.
9
b) Esc ibi un p og ama que use la unci´
on del apa ado an e io pa a de e mina cu´
an os
n´
ume os cu iosos pa es y cu´
an os n´
ume os cu iosos impa es hay en e 1 y un alo en e o
K, que se lee ´
a de eclado.
13. Di emos que dos n´
ume os en e os posi i os nymes ´
an liados si al pasa los a bina io la
can idad de 1’s de nes igual a la can idad de 0’s signi ica i os de my la can idad de 0’s
signi ica i os de nes igual a la can idad de 1’s de m.
Po ejemplo, el n´
ume o 50 (110010) es ´
a liado con: el 35 (100011), el 37 (100101), el 38
(100110), el 41 (101001), el 42 (101010), el 44 (101100), el 49 (110001), el 52 (110100) y el
56 (111000).
a) Esc ibi una unci´
on que de e mine si dos n´
ume os es ´
an o no liados, indicando su p e-
condici´
on y su pos condici´
on. La cabece a debe se :
boole liados (in n, in m)
b) Esc ibi un p og ama que use la unci´
on del apa ado an e io pa a de e mina cu´
ales son
los n´
ume os liados con uno dado, que se lee ´
a de eclado.
No a: Dado n¿cu´
al es el ango de los posibles candida os a es a liados con ´
el?
14. ¿Cu´
al es el dominio de de inici´
on del siguien e algo i mo? Jus i ica la espues a.
cha mayuscula(cha c) {
e u n c-32;
/*Pos :de uel e c en may´
usculas*/
}
NOTA: Pa a ans o ma ’z’ (c´
odigo ASCII 122) en ’Z’ (c´
odigo ASCII 90), po ejemplo, bas a
con es a le 32. Los c´
odigos ASCII de las le as may´
usculas an de 65 a 90.
15. El siguien e algo i mo de e mina si en un n´
ume o apa ece o no un de e minado d´
ıgi o ¿Cu´
al
es su dominio de de inici´
on? Jus i ica la espues a.
boole con ieneDigi o (in num, in digi o) {
in n;
n = num;
while ((n>9) && (n %10!=digi o)) {
n=n/10;
}
e u n (n %10==digi o);
}
16. Simpli ica al m´
aximo la siguien e unci´
on y especi ica la:
in simplFuncion(in y, in z, in ) {
in i, w, x;
x = 0;
i (x > 1) {
x = 2;
16
}
else {
x = 1;
}
i (x == 1) {
x = y;
x = (x+z)/2;
w=x;
o (i=1;i<=((w)/1)+1);i++) {
= *x+ ;
}
= /w;
}
else {
x = z;
x = (x+z)/2;
w = x;
}
e u n w;
}
17. Simpli ica al m´
aximo es e p ocedimien o, comen ando b e emen e odas las simpli icaciones
ealizadas (No a: N >i>0).
oid simplP ocedimien o(in N, loa b, in *i, loa *a) {
in j,k;
loa w, ;
j = *i;
while (j <= N) {
= j;
*a = b + (j-i);
w = sq (((*a)*(*a) + b*b)/2);
while ((*a < b) || (j == *i)) {
=w-b;
*a = w;
*i = *i + 1;
}
i ( >= 0) {
o (k=i; k<=j+1; k++) {
a=a+k;
*i = j;
}
}
else {
o (k=i; k<=j+1; k++) {
=w+b;
}
}
j=j+1;
}/* in del while (j <= N) */
}
17
18. Dado el siguien e algo i mo, que calcula el es o de la di isi´
on en e a, ¿cu´
al es su dominio de
de inici´
on?
in es o (in nume , in denom) {
/*P e: ..... */
while (nume >= denom)
nume = nume - denom;
e u n nume ;
/*Pos : de uel e el es o de la di isi´
on
en e a en e nume y denom */
}
19. Se p e ende esc ibi una unci´
on que esuel a la conje u a de los capic´
uas: dado un en e o
posi i o, hay que indica cu´
an as eces se debe epe i el p oceso de suma lo al alo ob enido
al in e i sus d´
ıgi os, an es de ob ene un esul ado capic´
ua.
Indica cu´
ales son los 4 e o es (no sin ´
ac icos) come idos al desa olla la siguien e unci´
on,
jus i icando pa a cada e o el po qu´
e:
in conje u a (in num) {
/*P e: num con iene un alo posi i o */
in eces,aux,suma=0;
eces=0;
aux=num;
do {
/*... has a llega a un capicua */
while ((aux/10) > 9) {
suma=(suma*10)+(aux %10);
aux=aux/10;
}
suma=(suma*10)+aux;
/*suma ale num in e ido */
/*si el n´
ume o no es capic´
ua, epi o */
i (num!=suma) {
eces= eces+1;
num=num+suma;
}
}while (num!=suma);
/*Pos : de uel e el n´
ume o de eces que se */
/* epi e el p oceso */
}
18
Cap´
ı ulo 5: Es uc u as de Da os Es ´
a icas
1. De inidos
in i, aux, n;
in [10];
ealiza una aza del siguien e agmen o de c´
odigo:
o (i=0; i<n; i=i+2) {
aux= [i];
[i]= [i+1];
[i+1]=aux;
}
sabiendo que n=10 y =(6, 2, 5, 1, 4, 5, 6, 3, 7, 6).
2. De inidos
in i, n;
loa [10];
ealiza una aza del siguien e agmen o de c´
odigo:
o (i=0; i<(n/2); i=i + 1) {
[i]= [n-(i+1)];
[n-(i+1)]= [i+1];
}
sabiendo que n=10 y =(6.5,2.0,5.1,4.1,7.5,5.0,6.25,3.1,7.8,6.0).
3. Dada la siguien e secuencia de ins ucciones:
con =0;
suma=0;
o (i=0; i<n; i=i+1){
i ( [i]>n1){
i ( [i]<n2){
con =con +1;
suma=suma+ [i];
}
}
}
se pide lo siguien e:
a) Con e i la secuencia an e io en una unci´
on o p ocedimien o, es deci , da le una ca-
bece a, indicando cu´
al o cu´
ales son los pa ´
ame os de en ada e indicando cu´
al o cu´
ales
son los esul ados que de uel e.
b) Es ablece la p econdici´
on, es deci , desc ibi bajo qu´
e condiciones dicha secuencia
se ´
a co ec a ( unciona co ec amen e y p oduce alg´
un esul ado).
c) Es ablece la pos condici´
on, es deci , indica qu´
e calcula.
4. Dado el siguien e agmen o de c´
odigo:
19
blancos = 0;
a ios = 0;
con Le a = 0;
i=0;
while (cad[i] != ’ 0’){
i ((cad[i] == ca )||(cad[i] == ca -32)){
con Le a = con Le a + 1;
}
else i (cad[i] == ’ ’){
blancos = blancos + 1;
}
else {
a ios = a ios + 1;
}
i = i+1;
}
po cen aje=con Le a/i;
a) Con e i la secuencia an e io en una unci´
on o p ocedimien o, es deci , indicando
qu´
e obje os debe ´
ıan se da os, cu´
ales esul ados y cu´
ales a iables p opias del p oceso,
da le una cabece a, hace la decla aci´
on de a iables y eesc ibi el c´
odigo pa a asegu a
que el esul ado o esul ados se de ol e ´
an adecuadamen e.
b) Es ablece la pos condici´
on, es deci , indica qu´
e calcula.
c) Es ablece la p econdici´
on, es deci , desc ibi bajo qu´
e condiciones dicha secuencia
se ´
a co ec a ( unciona co ec amen e y p oduce esul ados co ec os).
5. ¿Ve dade o o Falso (jus i ica )?:
“El p edicado (i==0 || i==N || [i]==c) es un in a ian e del siguien e bucle:”
in busca ( loa [], in N, loa c) {
/*P e: = ec o d ama˜
no N, c=elem. a busca */
in i=0;
while ( [i]!=c && i<N)
i++;
e u n i;
}
/*Pos : de uel e ´
ındice [0..N-1] de la posi-*/
/*ci´
on de c en si lo encuen a, o N si no */
6. Esc ibe odo lo que se pod ´
ıa lee en la pan alla del o denado al ejecu a el siguien e ag-
men o de p og ama, sabiendo que:
se han de inido es os dos ipos
ypede s uc {
cha nomb e[N];
loa s1, s2, s3;
} Sal ado ;
ypede s uc {
cha nomb e[N];
loa ma ca;
} Clasi icado;
Es posible que el siguien e p ocedimien o enga ins ucciones in´
u iles. Elimina cualquie
cosa que e pa ezca que sob a, jus i icando cada cambio, de o ma que quede una e si´
on
lo m´
as simple posible del p ocedimien o. Y, po supues o, que siga p oduciendo el mismo
e ec o:
20
oid chungoChungo(in a[], in n) {
/*P e: n > 0 */
/*Se supone de inido el ipo boole */
in i,j,k;
boole chi a o;
i=0;
while (i<n){
chi a o= also;
j=i+1;
while ((j<n)&& !(chi a o)){
chi a o=chi a o&&(a[i]==a[j]);
j=j+1;
}
i (j==n){
a[i]=0;
}
else {
o (k=j;k<n;k=k+1){
a[k]=a[j]+a[i];
a[k]=2*a[i];
}
i (a[n]<a[i]){
a[n]=0;
}
else{
a[i]=i;
}
}
i=i+1;
}
}
el ec o es un ec o de TAM=6 elemen os de ipo Sal ado , cuyos alo es son:
nomb e “J.Lino” “Fiona” “Yago” “Niu ka” “Concha” “I ´
an”
s1 6.75 0 0 6.38 6.69 6.05
s2 7.1 0 7.06 0 0 6.23
s3 7.32 6.37 7.01 0 6.17 7.08
0 1 2 3 4 5
que 2 es un ec o , ambi´
en de TAM=6, y con elemen os del ipo Clasi icado.
#include <s ing.h>
#de ine N 10
#de ine TAM 6
#de ine TOPE 6.5
... /*Las de iniciones de ipo */
in main() {
in indice,i;
loa max;
Sal ado [TAM];
Clasi icado 2[TAM];
... /*Se asignan los alo es de */
indice=0;
o (i=0; i<TAM; i=i+1) {
i (( [i].s1>=TOPE) || ( [i].s2>=TOPE) ||
( [i].s3>=TOPE)) {
21
p in (" n %s se clasi ica,", [i].nomb e);
s cpy( 2[indice].nomb e, [i].nomb e);
max= [i].s1;
i ( [i].s2 > max) {
max= [i].s2;
p in (" no po el p ime sal o,");
}
i ( [i].s3 > max) {
max= [i].s3;
p in (" ni po el segundo.");
}
2[indice].ma ca=max;
indice=indice+1;
}
}
p in (" n nClasi icados: n");
o (i=0; i<indice; i=i+1) {
p in (" >> %s, con un mejo sal o de
%5.2 m. n", 2[i].nomb e, 2[i].ma ca);
}
}
7. Esc ibe odo lo que se pod ´
ıa lee en la pan alla del o denado al ejecu a el siguien e ag-
men o de p og ama, sabiendo que el ec o es un ec o de TAM=6 elemen os de ipo
Hal e o ilia,
ypede s uc {
cha nomb e[N];
in peso;
} Hal e o ilia;
y que los alo es que se asigna ´
an a los elemen os de son:
nomb e “Paco” “Ped o” “Ana” “Alicia” “Pepe” “Luis”
peso 40 80 45 70 90 42
0 1 2 3 4 5
in main() {
in indice,i;
Hal e o ilia [TAM];
... /*Se asignan los alo es de */
indice=0;
p in (" nEl alo de indice es %d",indice);
o (i=1; i<TAM; i++) {
i ( [i].peso > [indice].peso) {
indice = i;
p in (" nEl alo de indice es %d",indice);
}
}
22
p in (" nGana %s con una ma ca de %d kilos. n",
[indice].nomb e, [indice].peso);
p in (" nDi e encias en e pa icipan es: n");
o (i=0; i<TAM; i++) {
i (i!=indice) {
p in (" >> En e %s y %s, de %d kilos. n",
[indice].nomb e, [i].nomb e,
( [indice].peso- [i].peso));
}
}
}
8. Esc ibi un algo i mo que pe mi a suma dos ec o es de Nelemen os.
9. Esc ibi un algo i mo que calcule la media de los elemen os de un ec o eal de Nelemen os.
10. Esc ibi un algo i mo que pe mi a ob ene el p oduc o escala de dos ec o es.
11. Dado un ec o de Ncomponen es eales, dise˜
na un algo i mo que pe mi a ob ene su ele-
men o m´
aximo y o o algo i mo que pe mi a ob ene su elemen o m´
ınimo.
12. Ob ene los algo i mos que, pa a un ec o a de Ncomponen es, de e minen:
a) El eco ido, = max(a[i]) - min(a[i]), i=1.. N,
b) El alo medio de los componen es de a, ˜a,
c) La des iaci´
on ´
ıpica,
σ=&%n
i=1(ai−˜a)2
n
d) El coe icien e de a iaci´
on, σ
˜a.
13. Alguien ha de inido la unci´
on amigos cuyo p o o ipo es:
boole amigos(in n1, in n2);
/*p e: n1=N1, n2=N2, en e os posi i os */
/*pos : de uel e cie o si N1 y N2 son amigos, */
/* also en caso con a io */
Teniendo en cuen a es a de inici´
on (adem´
as de la habi ual pa a el ipo boole), indica cu´
ales
son los 5 e o es (no sin ´
ac icos) come idos al desa olla el siguien e p ocedimien o, jus i i-
cando pa a cada e o el po qu´
e:
oid ec o Amigos (in M, in []) {
/*p e: es un ec o de en e os, de ama˜
no M */
in suma,i,j;
o (i=0; i<N; i=i+1) {
/*Se calcula en suma el alo */
/*de la suma de di iso es de i */
o (j=1; j<(i/2); j=j+1) {
i (i %j==0) {
suma=suma+i;
}
23
}
/*El alo almacenado en suma es */
/*el unico candida o a amigo de i */
/*Si lo es, se gua da en [i] y, */
/*si no, se gua da un ce o */
[i]=(amigos(i,suma))?0:suma;
}
/*pos : es un ec o en el que [i] es amigo */
/*de i, si i iene amigos, 0 en caso con a io */
}
14. Dado el siguien e bucle, que abaja con un ec o de N eales y un alo eal x,
....
boole iguales=cie o;
in i=0;
while ((i<N) && iguales)
i ( [i]==x)
iguales= also;
else
i=i+1;
....
¿es un in a ian e del bucle el p edicado
“ [k]=x, pa a odos los alo es de k ales que 0<=k < i”?
15. Dado un ec o A de ca ac e es, esc ibi un algo i mo que indique si la ase almacenada en
dicho ec o es o no capic´
ua.
No a: Se conside a que los ec o es de ca ac e es poseen un cen inela (’ 0’) que indica el inal
de los ca ac e es ´
alidos del ec o .
16. ¿Ve dade o o also? Hay que jus i ica las espues as.
a) Las siguien es secuencias hacen exac amen e lo mismo.
/*Secuencia num. 1*/
i=0;
enc= also;
while((i<n)&&!(enc)){
enc=( [i]==x);
i=i+1;
}
/*Secuencia num. 2*/
i=0;
enc= also;
while((i<n){
i (!(enc)){
enc=( [i]==x);
}
i=i+1;
}
b) El alumno que esc ibi´
o la secuencia n´
ume o 2, ob u o mejo no a en ese p oblema que
el alumno que esc ibi´
o la secuencia n´
ume o 1.
c) La siguien e e si´
on es mucho mejo que las an e io es.
24
/*Secuencia num. 3*/
i=0;
enc= also;
while((i<n){
i (!(enc)){
enc=( [i]==x);
i=i+1;
}
}
17. Dado un ec o Ade ipo base ca ´
ac e y dados dos ca ac e es ca 1 yca 2, esc ibi un
algo i mo que busque las ocu encias de ca 1 en Ay las sus i uya po ca 2.
18. Dado un ec o Ade ipo base ca ´
ac e y dado un ca ´
ac e c, esc ibi un algo i mo que busque
las ocu encias de cen Ay las elimine.
19. Necesi amos una unci´
on o p ocedimien o (jus i ica la elecci´
on) pa a co egi las may´
usculas
de un p´
a a o, de modo que an o la le a inicial como odas las p ime as le as que apa ezcan
despu´
es de un pun o es ´
en en may´
usculas (independien emen e de los espacios en blanco que
pueda habe en e el pun o y la le a). Po ejemplo, la co ecci´
on de la siguien e cadena
‘‘El pe o lad a. mi mad e can a... quisie a e la. Oigo. no eo
nada"
p oduci ´
ıa
‘‘El pe o lad a. Mi mad e can a... Quisie a e la. Oigo. No eo
nada"
a) Implemen a una unci´
on o p ocedimien o auxilia pasa AMayusculas. Si se le pasa
una le a min´
uscula, debe de ol e su con e si´
on a may´
uscula. En o o caso, debe de-
ol e el ca ´
ac e sin modi ica . Recue da que puedes pasa un ca ´
ac e cde min´
uscula
a may´
uscula con la exp esi´
on c-32.
b) U ilizando pasa AMayusculas, implemen a la unci´
on o p ocedimien o co igeMayusculas,
que ob enga una e si´
on co egida de una cadena dada.
c) Esc ibi un p og ama que use co igeMayusculas pa a i co igiendo cadenas que
se i ´
an leyendo de eclado, inalizando el p oceso cuando el usua io eclee una cadena
ac´
ıa.
No ol id´
eis indica p econdiciones y pos condiciones en odos los apa ados.
20. Uno de los m´
e odos m´
as simples pa a comp imi a chi os de m´
usica consis e en i calculando
la media a i m´
e ica de R alo es consecu i os y almacena el esul ado ob enido en o o iche-
o, ambi´
en de o ma consecu i a. As´
ı, se consigue di idi el ama˜
no del iche o o iginal en e
R. La idea del p oblema que os p oponemos es simila , pe o con ec o es.
Se dispone de un ec o de Nn´
ume os eales, siendo Nm´
ul iplo de R, ambas cons an es. Y
se quie e ob ene o o ec o wde n´
ume os eales, de ama˜
no M=N/R. Po ejemplo, si R=15 y
N=150, en onces Mse ´
ıa 10.
#de ine R 15 /*Reducci´
on del ama˜
no */
#de ine N 150 /*Tama˜
no del ec o , m´
ul iplo de R */
#de ine M 10 /*Tama˜
no del ec o w, N/R */
Se pide esc ibi una unci´
on o p ocedimien o (hay que jus i ica la elecci´
on) que, dado el
ec o , ob enga el ec o w, de modo que cada elemen o de wsea la media de 15 elemen os
consecu i os de , al y como mues a el siguien e esquema:
25
El m´
e odo a u iliza pa a asigna esca˜
nos a los pa idos es el siguien e (ley de D’Hon simpli-
icada):
Se cons uye una abla de NE columnas y NP ilas.
La p ime a columna coincide con los esul ados en o os ob enidos po cada pa ido; las
sucesi as, columna j con j=1...NE-1, se cons uyen di idiendo los alo es de la p ime a
columna en e (j+1) (di isi´
on en e a).
Los esca˜
nos se epa en a endiendo a las alo es m´
aximos de la abla: el p ime esca˜
no al
alo m´
as g ande, el segundo al siguien e m´
as g ande y as´
ı sucesi amen e has a epa i
los NE esca˜
nos.
32