scieee Open visual document viewer

Boletín de Problemas de Metodología y Tecnología de la Programación

Martínez Vidal, María Gloria; Pérez-Francisco, Miguel

Full text

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