Introducció a la Informàtica. Exercicis Grau...

40

Transcript of Introducció a la Informàtica. Exercicis Grau...

Page 1: Introducció a la Informàtica. Exercicis Grau d'Estadísticarobert/teaching/estadistica/introduccio/... · Problema 43. Divisors . euF un programa que mostri per pantalla tots els

Introducció a la Informàtica. Exercicis

Grau d'Estadística

Jaume Baixeries

Page 2: Introducció a la Informàtica. Exercicis Grau d'Estadísticarobert/teaching/estadistica/introduccio/... · Problema 43. Divisors . euF un programa que mostri per pantalla tots els

2

Page 3: Introducció a la Informàtica. Exercicis Grau d'Estadísticarobert/teaching/estadistica/introduccio/... · Problema 43. Divisors . euF un programa que mostri per pantalla tots els

Índex

1 Problemes Bàsics 5

1.1 Primers Problemes . . . . . . . . . . . . . . . . . . . . . . . . . . 51.2 Expressions Aritmètiques . . . . . . . . . . . . . . . . . . . . . . 71.3 Expressions Lògiques . . . . . . . . . . . . . . . . . . . . . . . . . 8

2 Alternativa 11

3 Iteracions 13

3.1 Exercicis Inicials . . . . . . . . . . . . . . . . . . . . . . . . . . . 133.2 Xifres i Dígits . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 143.3 Divisors i Múltiples . . . . . . . . . . . . . . . . . . . . . . . . . . 153.4 Sèries i Successions . . . . . . . . . . . . . . . . . . . . . . . . . . 16

4 Seqüències 19

5 Vectors 25

3

Page 4: Introducció a la Informàtica. Exercicis Grau d'Estadísticarobert/teaching/estadistica/introduccio/... · Problema 43. Divisors . euF un programa que mostri per pantalla tots els

4 ÍNDEX

Page 5: Introducció a la Informàtica. Exercicis Grau d'Estadísticarobert/teaching/estadistica/introduccio/... · Problema 43. Divisors . euF un programa que mostri per pantalla tots els

Capítol 1

Problemes Bàsics

1.1 Primers Problemes

Problema 1. Preguntes bàsiques: suma.Feu un programa que demani 3 valors per l'entrada estàndard i n'escrigui la

suma per pantalla.

Problema 2. Preguntes bàsiques: mitjana.Feu un programa que demani 3 valors per l'entrada estàndard i n'escrigui la

mitjana per pantalla.

Problema 3. Preguntes bàsiques:programa.Què treu per la sortida estàndard aquest programa?

x <- 20y <- 30z <- (x + y) / 2cat ("el resultat entre ",x," i ",y," és ",x+y,"\n")

Problema 4. Preguntes bàsiques.Què treu per la sortida estàndard aquest programa quan hi entrem 4 per

l'entrada estàndard? I si hi entrem 23?

5

Page 6: Introducció a la Informàtica. Exercicis Grau d'Estadísticarobert/teaching/estadistica/introduccio/... · Problema 43. Divisors . euF un programa que mostri per pantalla tots els

6 CAPÍTOL 1. PROBLEMES BÀSICS

x <- scan(n=1,quiet=TRUE)x <- x %% 2cat (x,"\n")

Problema 5. Preguntes bàsiques.Què treu per la sortida estàndard aquest programa quan entrem 20 i 30 per

l'entrada estàndard?

x <- scan(n=1,quiet=TRUE)y <- scan(n=1,quiet=TRUE)cat (x > y && x > 0,"\n")

Problema 6. Preguntes bàsiques.Què treu per la sortida estàndard aquest programa quan entrem 2 i 20 per

l'entrada estàndard?

x <- scan(n=1,quiet=TRUE)y <- scan(n=1,quiet=TRUE)ex <- x > 0 && x < 21 && y %% 2 == 0cat (ex,"\n")

Problema 7. Preguntes bàsiques.Què treu per la sortida estàndard aquest programa?

x <- 20y <- 20cat (x,y,x+y,"\n")

Problema 8. Preguntes bàsiques.Què treu per la sortida estàndard aquest programa quan hi entrem 4 per

l'entrada estàndard? I si hi entrem 23?

cat("Feu un valor entre 1 i 20")x <- scan(n=1,quiet=TRUE)cat (x %% 20,"\n")

Problema 9. Instruccions.Què treu per la sortida estàndard aquest programa quan entrem 20 i 30

l'entrada estàndard?

Page 7: Introducció a la Informàtica. Exercicis Grau d'Estadísticarobert/teaching/estadistica/introduccio/... · Problema 43. Divisors . euF un programa que mostri per pantalla tots els

1.2. EXPRESSIONS ARITMÈTIQUES 7

x <- scan(n=1,quiet=TRUE)x <- scan(n=1,quiet=TRUE)cat (x,"\n")

Problema 10. Intercanvi de variables.Donats dos enters, feu un programa que intercanviï el valor de les dues

variables.

1.2 Expressions Aritmètiques

Problema 11. Parell més a prop.Feu un programa que, donat un enter, escrigui el parell que té més a prop

seu. Exemple: si entra el 23, feu el 24 (o el 22). Si entra el 22, feu el 22.

Problema 12. Segons.Donat un nombre de segons, feu un programa que escrigui els nombre d'hores,

minuts i segons que representen per la sortida estàndard.

Problema 13. Hora.Donat un nombre d'hores, un de minuts i un de segons, feu un programa

que escrigui per la sortida estàndard el nombre de segons que representen.

Problema 14. Canvi.Donat un import en euros, feu un programa que escrigui la descomposició

en bitllets de 100, 50, 20, 10, 5 i monedes d'1 euro.

Page 8: Introducció a la Informàtica. Exercicis Grau d'Estadísticarobert/teaching/estadistica/introduccio/... · Problema 43. Divisors . euF un programa que mostri per pantalla tots els

8 CAPÍTOL 1. PROBLEMES BÀSICS

1.3 Expressions Lògiques

Problema 15. Seqüència.Donat tres enters, feu un programa que escrigui TRUE per la sortida estàndard

si i només si els enters fan una seqüència creixent o decreixent.

Problema 16. Doble.Donats 2 enters, feu un programa que escrigui TRUE per la sortida estàndard

si i només si un dels dos enters és més gran que el doble de l'altre.

Problema 17. Divisors.Donat un enter, feu un programa que escrigui TRUE si i només si té almenys

un divisor senar més petit que 10.

Problema 18. Sobre un nombre.Donat un enter, feu un programa que escrigui TRUE si i només si l'enter és

múltiple de 3 i més gran que 30.

Problema 19. Múltiples?.Donats dos enters, feu un programa que escrigui TRUE si i només si un dels

dos enters és múltiple de l'altre.

Problema 20. Pesos.Donat un enter més gran que 10, feu un programa que escrigui TRUE si i

només si la segona xifra (començant per la dreta) és el número 7.

Page 9: Introducció a la Informàtica. Exercicis Grau d'Estadísticarobert/teaching/estadistica/introduccio/... · Problema 43. Divisors . euF un programa que mostri per pantalla tots els

1.3. EXPRESSIONS LÒGIQUES 9

Problema 21. Dígits múltiples.Donat un enter més gran que 100 i menor que 1000, feu un programa que

escrigui TRUE si i només si la suma de tots 3 dígits és múltiple de 5.

Problema 22. Classi�cació.Per a dos equips de futbol, tenim els punts, els gols a favor i els gols en

contra. També tenim el resultat dels dos partits que els han enfrontat a la lliga.feu un programa que escrigui TRUE si i només si el primer equip va abans que elsegon a la classi�cació.

A la classi�cació tenim en compte els punts. En cas d'empat a punts, quitingui una diferència de gols més gran, i en cas d'empat, qui tingui més gols enel global de tots dos partits que han jugat els equips.

Problema 23. Cap-i-cua.Donat un enter més gran que 99 i menor que 1000, feu un programa que

escrigui TRUE si i només si és un número cap-i-cua.

Problema 24. Expressions.Digueu el valor de les expressions següents, tenint en compte els valors inicials

de les variables.

x <- TRUEy <- TRUEz <- TRUE

a <- 44b <- 10d <- 14

1. ((x && y) || (z && !y)) == (x == y)

2. ((a + 1) > 4) && (b %/% 2 > 1)

3. ((a + b + c) %% 5) > 3

4. x || z || ((a + 1) > 4)

Page 10: Introducció a la Informàtica. Exercicis Grau d'Estadísticarobert/teaching/estadistica/introduccio/... · Problema 43. Divisors . euF un programa que mostri per pantalla tots els

10 CAPÍTOL 1. PROBLEMES BÀSICS

Page 11: Introducció a la Informàtica. Exercicis Grau d'Estadísticarobert/teaching/estadistica/introduccio/... · Problema 43. Divisors . euF un programa que mostri per pantalla tots els

Capítol 2

Alternativa

Problema 25. Operació.Feu un programa que, donats un caràcter (corresponent a un dels caràcters:

'+', '-', '*' o '/') i dos enters, calculi el resultat de fer l'operació demanada entreells.

Problema 26. Equació de 2on grau.Feu un programa que que avaluï una equació de segon grau. Els paràmetres

són els coe�cients de l'equació.

Problema 27. Valor absolut.Feu un programa que calculi el valor absolut d'un enter que entreu pel teclat.

Problema 28. Màxim de 3.Feu un programa que calculi el màxim de 3 valors que entreu pel teclat.

Problema 29. Per sobre la mitjana.Feu un programa que, donats 4 valors que entreu pel teclat, digui quants

d'aquests valors són més grans que la mitjana de tots quatre.

11

Page 12: Introducció a la Informàtica. Exercicis Grau d'Estadísticarobert/teaching/estadistica/introduccio/... · Problema 43. Divisors . euF un programa que mostri per pantalla tots els

12 CAPÍTOL 2. ALTERNATIVA

Problema 30. En ordre.Feu un programa que, donats 3 valors per teclat, els imprimeixi en ordre per

la pantalla.

Problema 31. Freqüència.Feu un programa que, donades 3 paraules, digui quantes vegades apareix la

més freqüent (òbviament, poden estar repetides).

Page 13: Introducció a la Informàtica. Exercicis Grau d'Estadísticarobert/teaching/estadistica/introduccio/... · Problema 43. Divisors . euF un programa que mostri per pantalla tots els

Capítol 3

Iteracions

3.1 Exercicis Inicials

Problema 32. Parells Petits.Escriviu un programa que a partir d'un natural n llegit del canal d'entrada,

mostri tots els nombres parells més petits que n pel canal de sortida.

Problema 33. Potència de 7.Escriviu un programa que calculi la potència de 7 més propera a 1000 per

excés (no podeu fer servir l'operació de potència (xy): x ** y).

Problema 34. Quadrat perfecte.Escriviu un programa que donat un enter n, digui si és quadrat perfecte. Es

diu que n és un quadrat perfecte si existeix un altre enter m tal que m2 = n. Perexemple, 4 és un quadrat perfecte perquè 22 = 4. No podeu fer servir l'operacióde potència (xy): x ** y.

Problema 35. Cub perfecte.Dissenyeu un programa que, donat un nombre natural n, digui si és un cub

perfecte, és a dir, si existeix un natural m tal que m3 = n.

13

Page 14: Introducció a la Informàtica. Exercicis Grau d'Estadísticarobert/teaching/estadistica/introduccio/... · Problema 43. Divisors . euF un programa que mostri per pantalla tots els

14 CAPÍTOL 3. ITERACIONS

Problema 36. Bucles.Què hi haurà a la sortida estàndard després d'executar aquest programa?

for (i in 1:2) {for (j in 1:3) {

for (k in 1:2) {if (i > j && j < i + k) {

cat (i+j+k," ")}

}}

}

3.2 Xifres i Dígits

Problema 37. 3 xifres.Escriviu un programa que mostri tots els nombres de tres xifres tals que la

suma de les centenes més les desenes sigui igual a les unitats. Aquest programaadmet una solució exhaustiva, i una altra de més e�caç.

Problema 38. Nombre de xifres.Feu un programa que, donat un enter més gran que zero, calculi el nombre

de xifres que conté. Exemple: l'enter 4099 està format per 4 xifres (4, 0, 9 i 9).

Problema 39. Suma de xifres.Donat un enter, feu un programa que calculi la suma de les seves xifres.

Problema 40. Dígits invertits.Donat un enter positiu, feu un programa que calculi un enter x resultat

d'invertir els dígits que formen el nombre. Exemple: capgirar(7412) = 2147Important: cal calcular una variable que contingui el valor 2147, no simplementtreure els dígits en ordre per pantalla.

Page 15: Introducció a la Informàtica. Exercicis Grau d'Estadísticarobert/teaching/estadistica/introduccio/... · Problema 43. Divisors . euF un programa que mostri per pantalla tots els

3.3. DIVISORS I MÚLTIPLES 15

Problema 41. Dígit repetit.Dissenyeu un programa que, donat un enter positiu, torni quantes vegades

conté el dígit 7. Exemples: per l'enter 1983 tornaria 0, per l'enter 207463727tornaria 3.

3.3 Divisors i Múltiples

Problema 42. Euclides.Codi�queu l'algorisme d'Euclides, el qual permet determinar el màxim comú

divisor de dos nombres enters positius a i b de la manera següent:

1. Si a i b són iguals, doneu el valor d'a com a resultat i �nalitzeu.

2. Si a i b són diferents, canvieu el valor del més gran dels valors d'a i b perla diferència entre el valor més gran i el més petit, i torneu al pas 1.

Problema 43. Divisors.Feu un programa que mostri per pantalla tots els divisors d'un natural donat.

Problema 44. Suma de múltiples.Feu un programa que, donat un enter positiu n, torni la suma dels n primers

múltiples de 3.Exemple: n = 4. Valor retornat per la funció = 3 + 6 + 9 + 12 = 30

Problema 45. Sumes de múltiples d'un nombre.Donat un enter x (que és el nombre del qual volem calcular múltiples) i un

altre enter n (que és el nombre de múltiples que volem calcular), feu un pro-grama que calculi els n primers múltiples de x i retorni dos enters que siguin lasuma dels múltiples senars i la suma dels múltiples parells.

El programa només ha d'escriure la suma dels múltiples parells i la sumadels múltiples senars.

Page 16: Introducció a la Informàtica. Exercicis Grau d'Estadísticarobert/teaching/estadistica/introduccio/... · Problema 43. Divisors . euF un programa que mostri per pantalla tots els

16 CAPÍTOL 3. ITERACIONS

3.4 Sèries i Successions

Problema 46. Successió.Escriviu un programa que a partir d'un valor enter donat N , que se suposa

més gran que 1, i d'un valor real x, calculi la suma dels N primers termes de lasuccessió següent:

N−1∑i=0

xi

2i

No podeu fer servir l'operació de potència (xy): x ** y. Exemple: N =3, x = 3

1 +x

2+

x2

4= 1 +

3

2+

9

4= 1 + 1.5 + 2.25 = 4.75

Problema 47. Nombres triangulars.Feu un programa que, donat un enter n, escrigui els primers n nombres

triangulars. La sèrie matemàtica dels nombres triangulars es de�neix com:

x1 = 1

xk+1 = xk + k + 1

Exemples dels primers termes de la sèrie són:

x1 = 1

x2 = x1 + 1 + 1 = 1 + 1 + 1 = 3

x3 = x2 + 2 + 1 = 3 + 2 + 1 = 6

x4 = x3 + 3 + 1 = 6 + 3 + 1 = 10

Problema 48. Successió de Fibonacci.Sigui la de�nició dels nombres de Fibonacci:

f(n) =

1 n = 1

1 n = 2

f(n− 1) + f(n− 2) altrament

Donat un enter n, calculeu els n primers nombres de la successió de Fibo-nacci. Per exemple, si n = 8, llavors el programa ha d'escriure: 1, 1, 2, 3, 5, 8,13, 21.

Page 17: Introducció a la Informàtica. Exercicis Grau d'Estadísticarobert/teaching/estadistica/introduccio/... · Problema 43. Divisors . euF un programa que mostri per pantalla tots els

3.4. SÈRIES I SUCCESSIONS 17

Problema 49. Suma de Nombres de Fibonacci.Donat un interval (X,Y ), fes un programa que calculi la suma dels nombres

de Fibonacci que es trobin dins d'aquest interval. Per exemple, si l'interval és(2, 6), el resultat serà:

10 = 2 + 3 + 5

Problema 50. Càlcul del Sinus.Feu una funció tal que donat, un nombre real x, i un enter n, aproximi la

funció sin(x) amb n termes (n sumands). Cal que feu l'aproximació de sin(x)per la sèrie de Taylor. S'ha de tenir present que quan i (i=1,2,...,n) és parell elsumant de Taylor pren per valor 0.

sin(x) = x− x3

3!+

x5

5!− · · · (3.1)

La funció ha de tenir la següent capçalera:

La funció retorna el sin(x) avaluat en n termes de sèrie de Taylor. Fixeu-vosque per a un n prou gran, la funció aproxima molt bé el resultat real de sin(x)que es pot obtenir amb qualsevol calculadora o amb la mateixa funció sin queté l'R.

Problema 51. Producte Cartesià.Donats dos intervals de naturals (que vénen donats per dos naturals), cal-

culeu tots els parells que pertanyen al producte cartesià de tots els naturals decada interval. Per exemple, si un interval és (1, 3) i l'altre és (4, 5), caldria queel programa escrivís per pantalla els parells:

(1, 4), (1, 5), (2, 4), (2, 5), (3, 4), (3, 5)

Problema 52. Aproximació de la Funció cosinus.Una manera de calcular la funció cosinus és amb la següent aproximació:

cos (x) ≈ 1− x2

2!+

x4

4!− x6

6!+ . . .

Fes un programa que llegeixi del teclat el valor d'un angle x i un nombre determes N , i calculi cos(x) amb l'aproximació d'N termes.

Page 18: Introducció a la Informàtica. Exercicis Grau d'Estadísticarobert/teaching/estadistica/introduccio/... · Problema 43. Divisors . euF un programa que mostri per pantalla tots els

18 CAPÍTOL 3. ITERACIONS

Problema 53. Primers.Vull fer un programa que calculi els nombres primers �ns a N. El valor donat

a N és sempre més gran que 2. Recordeu que un nombre és primer si no té capdivisor llevat d'u i ell mateix.

Problema 54. Suma de sèrie.Sigui la suma d'una sèrie: ∑

0≤i≤n

x + 2i

i!

Fes un programa que, donat un real x i un enter n calculi la suma d'aquestasèrie amb n termes. Òbviament, no podeu assumir que teniu una funció quecalcula el factorial d'un nombre.

Òbviament, no podeu fer servir la funció factorial per a calcular i!.

Page 19: Introducció a la Informàtica. Exercicis Grau d'Estadísticarobert/teaching/estadistica/introduccio/... · Problema 43. Divisors . euF un programa que mostri per pantalla tots els

Capítol 4

Seqüències

Problema 55. Mitjana d'una seqüència.Feu un programa que calculi la mitjana dels valors d'una seqüència que

entrem pel teclat.

Problema 56. Màxim i mínim d'una seqüència.Feu un programa que calculi el màxim i el mínim d'una seqüència que entrem

per teclat.

Problema 57. Parells d'una seqüència.Feu un programa que calculi el nombre de nombres parells que té una se-

qüència.

Problema 58. Positius versus negatius.Donada una seqüència d'enters, feu un programa que que escrigui TRUE si i

només si la seqüència té més valors positius que negatius.

19

Page 20: Introducció a la Informàtica. Exercicis Grau d'Estadísticarobert/teaching/estadistica/introduccio/... · Problema 43. Divisors . euF un programa que mostri per pantalla tots els

20 CAPÍTOL 4. SEQÜÈNCIES

Problema 59. Posició dels negatius.Donada una seqüència d'enters acabada en 0, escriviu un programa que

mostri la posició de tots els valors negatius. En cas que no hi hagi cap valornegatiu, el programa ha de mostrar un missatge indicant-ho.

Problema 60. Atletisme.Donada una seqüència de nombres reals acabada en 0, el primer dels quals

és el rècord del món (en segons) en la prova de 100 metres llisos i els valorssegüents, que no estan ordenats, són els temps (en segons) enregistrats en lamateixa prova per un grup no buit d'atletes durant una competició, escriviu unprograma que calculi:

1. el nombre d'atletes que han participat de la prova,

2. la millor marca enregistrada i

3. decidir si s'ha batut o no el rècord del món.

Problema 61. Vegades repetit.Donats un enter N i una seqüència d'enters positius, escriviu un programa

que calculi quantes vegades apareix N a la seqüència d'entrada. Feu-ne duesversions, una suposant que els elements estan ordenats i una altra suposant queno ho estan.

Problema 62. Elements iguals en seqüència.Feu un programa que, donada una seqüència d'entrada, escrigui TRUE si i

només si tots els elements de la seqüència són iguals.

Problema 63. Parell en seqüència.Donada una seqüència d'enters positius, feu un programa que retorni TRUE

si la seqüència conté almenys un nombre parell.

Page 21: Introducció a la Informàtica. Exercicis Grau d'Estadísticarobert/teaching/estadistica/introduccio/... · Problema 43. Divisors . euF un programa que mostri per pantalla tots els

21

Problema 64. Negatiu en seqüència.Escriviu un programa que donada una seqüència d'enters, que escrigui TRUE

si i només si no hi ha cap valor negatiu.

Problema 65. Primer negatiu.Donada una seqüència d'enters, feu un programa que digui en quina posició

es troba el primer enter negatiu. En cas que no hi hagi cap valor negatiu, elprograma ha de mostrar un missatge indicant-ho.

Problema 66. Temperatures.Dissenyeu un programa que, a partir de les temperatures mínimes enregistra-

des durant un període donat de n dies (que se suposa més gran que 2), numeratsde 1 a n, mostri quins han estat els primers dies en què s'enregistraren tempera-tures mínimes negatives durant dos dies consecutius. En cas que no existeixin,cal indicar-ho.

Exemple: Dades: n = 7, temperatures = 4.2, 1.5,−0.5,−1.8, 2.1,−0.8,−1.3.Resultat: 3 i 4 són els primers dos dies consecutius amb temperatures negatives.

Problema 67. Seqüència creixent o decreixent.Donada una seqüència, feu un programa que escrigui TRUE si i només si una

seqüència és estrictament creixent o estrictament decreixent.

Problema 68. O parells o senars.Donada una seqüència, feu un programa que escrigui TRUE si i només si tots

els elements de la seqüència són parells, o bé si són tots senars.

Problema 69. Pics.Sigui una seqüència d'enters, d'almenys tres elements. Un pic és un element

xi de la seqüència que compleix la següent condició:

xi−1 < xi > xi+1

Feu un programa que calculi quants pics té una seqüència d'entrada. Perexemple, amb l'entrada:

Page 22: Introducció a la Informàtica. Exercicis Grau d'Estadísticarobert/teaching/estadistica/introduccio/... · Problema 43. Divisors . euF un programa que mostri per pantalla tots els

22 CAPÍTOL 4. SEQÜÈNCIES

3 4 5 4 5 1 2 3 1 -1

el programa escriuria 3 per pantalla. En aquest cas, els pics són 5, 5 i 3.

Problema 70. Creixent-Decreixent.Siguin dues seqüències de la mateixa mida (i no buides, és a dir, almenys

hi ha un element) que es donen intercalades. Per exemple, si X = 3, 4, 7, 2, 4 iY = 5, 9, 6, 5, 1 llavors l'entrada serà:

5 3 5 4 9 7 6 2 5 4 1

on 5 serà la mida de totes dues seqüències, 3 serà el primer element de X, 5el primer de Y , 4 el segon element de X i 9 el segon de Y , etc.

Feu un programa que escrigui a la pantalla SÍ si la seqüència X és creixenti la seqüència Y decreixent, o bé que escrigui NO altrament. Per exemple, ambla següent entrada:

3 3 5 4 4 7 1

el programa escriuria SÍ, mentre que amb la següent entrada:

3 3 5 4 4 7 5

el programa escriuria NO perquè la seqüència Y (5,4,5) no és decreixent.

Problema 71. Saldo.Sigui una seqüència (per tant, no feu servir vectors!):

N imp1 dia1 imp2 dia2 . . . impN diaN

tal que N és el nombre de parells (impi diai) que té la seqüència. Cadaparell (impi diai) representa un import impi que es fa el dia diai en un comptecorrent. Òbviament, impi pot ser positiu (ingrés) o negatiu (reintegrament).

La seqüència sempre complirà les següents condicions (per tant, no cal queles comproveu):

1. No hi ha cap dia repetit: com a màxim, hi ha una transacció per dia.

2. La seqüència de transaccions representa que es fa en dies creixents, és adir, si i < j, llavors tenim que diai < diaj .

3. dia1 = 1 i diaN = 30.

4. Encara que el saldo a dia 30 sigui negatiu, no cal comptar el dia 30 coma descobert.

Page 23: Introducció a la Informàtica. Exercicis Grau d'Estadísticarobert/teaching/estadistica/introduccio/... · Problema 43. Divisors . euF un programa que mostri per pantalla tots els

23

Feu un programa que llegeixi una seqüència com la que indica l'enunciat,escrigui per pantalla quants dies ha estat el compte corrent en descobert, és adir, quants dies ha estat el compte corrent amb saldo negatiu. Assumiu que elcompte té zero euros al principi, i que es considera descobert quan el compte tésaldo negatiu (no pas zero o positiu) a partir de l'endemà de fer l'operació.

Per exemple, amb la seqüència:

7 40 1 − 37 5 20 7 − 40 17 17 28 − 50 29 10 30

tindrem que haurem estat amb el saldo en descobert dels dies 17 al 28 (amb-17 euros), és a dir, 11 dies, i del dia 29 al 30 (amb -50 euros), és a dir, 1 dia.Per tant, el programa haurà d'escriure 12.

Amb la seqüència

4 − 10 1 20 6 − 30 8 40 30

haurem estat en descobert dels dies 1 al 6 (5 dies) i del 8 al 30 (22 dies), iper tant, el programa haurà d'escriure 27.

Problema 72. Compressió.Feu un programa tal que, donada una seqüència amb almenys dos ele-

ments al canal d'entrada (teclat) composta per nombres naturals estrictamentmés grans que zero, i que acaba amb un zero (que marca el �nal de seqüència),escrigui pel canal de sortida (pantalla) la compressió de la seqüència.

La compressió d'una seqüència consisteix en dir la mida i l'element quecomposa cada subseqüència d'elements iguals consecutius. Per exemple, donadala seqüència:

[5, 5, 5, 5, 5, 5, 5, 5, 4, 4, 1, 2, 4, 4, 4, 0]

la compressió d'aquesta seqüència és:

(5 : 8)(4 : 2)(1 : 1)(2 : 1)(4 : 3)

ja que:

[5, 5, 5, 5, 5, 5, 5, 5︸ ︷︷ ︸8

, 4, 4︸︷︷︸2

, 1︸︷︷︸1

, 2︸︷︷︸1

, 4, 4, 4︸ ︷︷ ︸3

, 0]

Molt important: òbviament, per a la resolució d'aquest problema no po-

deu fer servir vectors. Si apareix un vector a la vostra solució, l'exercicitindrà un zero.

Page 24: Introducció a la Informàtica. Exercicis Grau d'Estadísticarobert/teaching/estadistica/introduccio/... · Problema 43. Divisors . euF un programa que mostri per pantalla tots els

24 CAPÍTOL 4. SEQÜÈNCIES

Problema 73. Mitjana Ponderada de Notes.L'expedient d'un estudiant és una seqüència que es composa de (en aquest

ordre): nombre total de crèdits (C), nombre (N) de parells de notes i crèdits,i després els parells amb la nota i el nombre de crèdits de l'assignatura (tantscom indiqui N).

Per exemple, si un estudiant s'ha examinat de 3 assignatures, en què lesnotes són 8, 5 i 9, i el nombre de crèdits de cada assignatura són 3, 4.5 i 6respectivament, la seqüència d'entrada serà:

13.5 3 8 3 5 4.5 9 6

on 13.5 és en nombre total de crèdits de l'estudiant (C = 13.5), 3 és elnombre total de parells nota-crèdit (N = 3), i 8 3, 5 4.5 i 9 6 són els 3 parellsde nota-crèdit.

Feu un programa que calculi la nota mitjana ponderada de les notes del'expedient. En l'exemple anterior, el programa escriuria per pantalla 7.444.

Problema 74. Seqüència Fibonacci.Feu un programa tal que, donada una seqüència pel canal d'entrada, escri-

gui TRUE pel canal de sortida si i només si els N elements de la seqüència són elsprimers N nombres de Fibonacci. La seqüència acaba en zero, i tindrà almenys2 nombres (sense incloure el zero que marca el �nal de seqüència). A més, elsdos primers elements de la seqüència seran sempre [1 1] (els dos primers nom-bres de Fibonacci). Òbviament, no podeu fer servir vectors per a resoldreaquest problema.

Per exemple, si la seqüència és: [1 1 2 3 5 8 13 0] el programa escriuràTRUE, mentre que si la seqüència és [1 1 2 3 5 9 13 0] el programa escriuràFALSE.

Recordeu que F1 = 1, F2 = 1 i que Fi = Fi−1 + Fi−2 per a i > 2.

Page 25: Introducció a la Informàtica. Exercicis Grau d'Estadísticarobert/teaching/estadistica/introduccio/... · Problema 43. Divisors . euF un programa que mostri per pantalla tots els

Capítol 5

Vectors

Problema 75. Suma de vectors (I).Feu una funció que, donats dos vectors amb valors reals retorni el vector

resultant de la suma dels elements de tots dos vector. Per exemple:

sumavectors (1:3, 2:5) torna 20

Problema 76. Suma de vectors (II).Donats dos vectors amb valors enters, feu una funció que torni el vector

resultant de la suma de tots dos, element a element. Tots dos vectors tenen lamateixa mida. Per exemple:

sumavectors (1:4, 2:5) torna 3 5 7 9.

Problema 77. Càlculs sobre vector.Donat un vector amb valors enters, feu una funció que calculi quants elements

són més grans que la mitjana, quants són més petits i quants són iguals.

Problema 78. A l'inrevés.Escriu una funció que, donat un vector, torni el mateix vector capgirat. Per

exemple:

25

Page 26: Introducció a la Informàtica. Exercicis Grau d'Estadísticarobert/teaching/estadistica/introduccio/... · Problema 43. Divisors . euF un programa que mostri per pantalla tots els

26 CAPÍTOL 5. VECTORS

inreves (1:4) torna 4 3 2 1

Problema 79. Element inserit.Feu una funció que rebi un vector V , un element i una posició dins del vector,

i que torni un vector que sigui el resultat d'inserir l'element a la posició en elvector. La posició es troba dins del rang 1:length(V). Per exemple:

> v <- 2 4 7 -2 33> v <- insereix(v,88,3)> v[1] 2 4 88 7 -2 33

Problema 80. Posicions parelles.Feu una funció que donat un vector d'enters, torni un vector que té els valors

del vector d'entrada que són en els subíndexos parells (no els elements parells,sinó els que són en posició parella).

Problema 81. Elements iguals en vector.Feu una funció que donat un vector, retorni TRUE si i només si tots els

elements són iguals.

Problema 82. Elements iguals a un altre en vector.Escriviu una funció que, donats un vector i un enter, digui si tots els elements

del vector són iguals a l'enter donat.

Problema 83. Vegades repetit.Fes una funció que, donats un vector i un enter, calculi quantes vegades

apareix l'enter donat al vector. Feu-ne dues versions, una suposant que elselements estan ordenadats i una altra suposant que no ho estan.

Page 27: Introducció a la Informàtica. Exercicis Grau d'Estadísticarobert/teaching/estadistica/introduccio/... · Problema 43. Divisors . euF un programa que mostri per pantalla tots els

27

Problema 84. Unió.Feu un funció que, donats dos vectors amb valors enters, retorni un nou

vector amb la seva unió (operació de conjunts). Suposarem que els vectorsd'entrada, individualment, no contenen elements repetits.

Nota: La unió és una operació entre conjunts. Aquesta operació crea unconjunt, anomenat conjunt unió, al qual pertanyen tots els elements que perta-nyen a qualsevol dels conjunts que s'uneixen. S'expressa amb el símbol ∪. Perexemple, donat A = 1, 2, 3, 10 i B = 1, 2, 6, 8, si de�nim C = A ∪ B, llavorsC = 1, 2, 3, 10, 6, 8.

Problema 85. Intersecció.Feu una funció que, donats dos vectors amb valors enters, retorni un nou

vector amb la seva intersecció (operació de conjunts). Suposarem que els vectorsd'entrada, individualment, no contenen elements repetits.

Nota: La intersecció és una operació entre conjunts. Aquesta operació creaun conjunt, anomenat conjunt intersecció, al qual pertanyen tots els elementsque pertanyen a la vegada a tots els conjunts que s'intersequen. S'expressaamb el símbol ∩. Per exemple, donat A = 1, 2, 3, 10 i B = 1, 2, 6, 8, si de�nimC = A ∩B, llavors C = 1, 2.

Problema 86. Palíndrom (cap-i-cua).Fes una funció que, donats un vector d'enters, torni TRUE si i només si és

cap-i-cua.

Problema 87. Parell en vector.Fes una funció que, donat un vector d'enters positius, torni TRUE si i només

si conté almenys un nombre parell.

Page 28: Introducció a la Informàtica. Exercicis Grau d'Estadísticarobert/teaching/estadistica/introduccio/... · Problema 43. Divisors . euF un programa que mostri per pantalla tots els

28 CAPÍTOL 5. VECTORS

Problema 88. Màxim en vector.Fes una funció que, donat un vector d'enters, en torni el valor màxim.

Problema 89. Zeros i uns.Feu una funció que, donada una mida, torni un vector d'aquesta mida tal

que els valors del vector seran 0 i 1, alternats, començant pel 0. Per exemple,zeros_uns (5) tornaria [0, 1, 0, 1, 0].

Problema 90. Divisor en un vector.Feu una funció que, donats un vector i un enter, torni TRUE si i només si

l'enter donat és divisor d'algun dels elements del vector.

Problema 91. Tots parells?.Feu una funció que donat un vector amb valors enters positius, torni TRUE

si i només si tots els seus valors són parells.

Problema 92. Successió de Fibonacci.Donat un enter (n), calcula els n primers nombres de la successió de Fibo-

nacci, de�nida com aquella tal que els dos primers nombres són l'1 i el 2, i oncada element a partir del tercer es calcula sumant els dos anteriors: 1, 2, 3, 5,8, 13, 21, . . .

Problema 93. Correlació de Pearson.Donat dos vectors x i y, fes una funció amb la següent capçalera:

que calculi el coe�cient de correlació de Pearson. El coe�cient de correlacióde Pearson es calcula com a:

n∑i=1

(xi − x)(yi − y)√√√√ n∑i=1

(xi − x)2n∑

i=1

(yi − y)2

La funció tindrà com a paràmetres dos vectors de reals: x, y.

Page 29: Introducció a la Informàtica. Exercicis Grau d'Estadísticarobert/teaching/estadistica/introduccio/... · Problema 43. Divisors . euF un programa que mostri per pantalla tots els

29

Problema 94. Distància més curta.Feu la funció:

dist_mes_curta <- function(x,y)

Aquesta funció fa el següent: rep un parell de vectors x i y que tenen coor-denades en un pla en dues dimensions (la coordenada del punt pi és (xi, yi)).Òbviament la mida de tots dos vectors és la mateixa. La funció ha de retornarquina és la distància (euclidiana) més curta que hi ha entre dos punts diferentsde tot el conjunt de punts. Formalment, torna:

min({d(pi, pj) | i 6= j})

La distància euclidiana entre dos punts pi = (xi, yi) i pj = (xj , yj) es de�neixcom a:

d(pi, pj) =√

(xi − xj)2 + (yi − yj)2

Problema 95. Correlació menys un.Feu la següent funció:

cor_menys_un <- function(x,y)

Sabem que la correlació entre x i y no és tan forta com voldríem, i sabem quea les observacions contingudes en els vectors x, y hi ha una observació atípicaque ens fa la guitza. Aquesta funció detecta quina és aquesta observació. Penseuen totes les possibles correlacions

correlacio(x− x[i], y − y[i]),∀i ∈ {0, N − 1}

on x − x[i] i y − y[i] vol dir els vectors x, y sense l'observació x[i], y[i]. Detotes aquestes, volem la més gran, és a dir, volem saber quina és l'observació ital que correlacio(x− x[i], y − y[i]) és la màxima. La funció torna el subíndexi. Podeu utilitzar la funció de la pràctica (no cal que la programeu aquí):

Problema 96. Elements no repetits.Feu la funció:

uniq <- function(v)

Page 30: Introducció a la Informàtica. Exercicis Grau d'Estadísticarobert/teaching/estadistica/introduccio/... · Problema 43. Divisors . euF un programa que mostri per pantalla tots els

30 CAPÍTOL 5. VECTORS

Aquesta funció fa el següent: rep un vector v i torna un altre vector amb elselements del vector v sense repetir. Per exemple, si tenim:

v = [5, 7, 6, 5, 4, 5, 6, 7, 6, 5]

la funció torna:

v = [5, 7, 6, 4]

L'ordre en què torna els valors no repetits no té importància.

Problema 97. Segona moda.Feu la funció:

segona_moda <- function (v)

Aquesta funció fa el següent: donat el vector v torna el valor de v que té lasegona freqüència més gran. Per exemple, si:

v = [5, 7, 6, 5, 4, 5, 6, 7, 6, 5]

torna el 6, que té la segona freqüència més gran. Assumiu que tots els valorsde v tenen freqüències diferents i que v té, almenys, dos valors diferents.

Problema 98. Triangle de Pascal.El triangle de Pascal serveix per a calcular coe�cients binomials (per exem-

ple, �ns a n = 4):n = 0:

(00

)n = 1:

(10

) (11

)n = 2:

(20

) (21

) (22

)n = 3:

(30

) (31

) (32

) (33

)n = 4:

(40

) (41

) (42

) (43

) (44

)Els valors d'aquest Triangle de Pascal (per a n = 4) són:n = 0: 1

n = 1: 1 1

n = 2: 1 2 1

n = 3: 1 3 3 1

n = 4: 1 4 6 4 1

↑ ↑ ↑ ↑ ↑(40

) (41

) (42

) (43

) (44

)

Page 31: Introducció a la Informàtica. Exercicis Grau d'Estadísticarobert/teaching/estadistica/introduccio/... · Problema 43. Divisors . euF un programa que mostri per pantalla tots els

31

Es tracta de calcular els coe�cients binomials �ns a un n determinat. Caltenir en compte les següents relacions per a calcular el triangle de Pascal:(

n

0

)=

(n

n

)= 1

(n

k − 1

)+

(n

k

)=

(n + 1

k

)Amb aquestes dues relacions, en teniu prou per a calcular el triangle de

Pascal �ns a nivell n. El que heu de fer és un programa tal que llegeixi un n delteclat, i escrigui per pantalla el triangle de nivell n.

Per exemple, si n = 4 cal que el programa escrigui per pantalla:

1

1 1

1 2 1

1 3 3 1

1 4 6 4 1

Pista: Penseu que per a calcular els resultats de la �la n = i només cal quetingueu calculats els resultats de la �la n = i− 1. Això vol dir que caldrà desarels resultats de la �la n = i per quan volgueu calcular els resultats de la �lan = i + 1.

Problema 99. Repetició.Feu una funció repeticio, que rep dos vectors x, y, i que retorna un vector

tal que cada x[i] apareix repetit y[i] vegades. La mida de tots dos vectorsd'entrada és la mateixa. Per exemple, si tenim:

x = [1, 2, 3]y = [2, 3, 1]

la funció haurà de tornar:r = [ 1, 1︸︷︷︸

2

, 2, 2, 2︸ ︷︷ ︸3

, 3︸︷︷︸1

]

Problema 100. Seqüència més curta.Un subvector d'un vector és una secció d'elements consecutius. Per exemple,

si v = [1, 2, 3, 4, 5, 6], un possible subvector de v seria [3, 4, 5], però [2, 3, 5] no hoseria.

Feu una funció sequencia que rep un vector que només conté enters positius,i torna la mida del subvector maximal més curt amb els mateixos nombres demanera consecutiva. Per exemple, si:

Page 32: Introducció a la Informàtica. Exercicis Grau d'Estadísticarobert/teaching/estadistica/introduccio/... · Problema 43. Divisors . euF un programa que mostri per pantalla tots els

32 CAPÍTOL 5. VECTORS

v = [1, 1, 1, 1, 1, 2, 2, 3, 3, 3, 3, 4, 4, 4, 4, 4, 1, 1, 1]

la funció sequencia torna 2, que és la mida del subvector:v = [1, 1, 1, 1, 1, 2, 2︸︷︷︸

2

, 3, 3, 3, 3, 4, 4, 4, 4, 4, 1, 1, 1]

Si tenim que:

v = [1, 1, 1, 1, 1, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 6, 6, 6, 6, 6, 6]

la funció sequencia torna 5, que és la mida del subvector:v = [1, 1, 1, 1, 1︸ ︷︷ ︸

5

, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 6, 6, 6, 6, 6, 6]

Problema 101. Concèntric.

Feu una funció concentric que, donat dos vectors d'entrada x, y, amb nom-bres naturals positius, torni TRUE si i només si el vector y té els elements delvector x col·locats de manera concèntrica.

Una col·locació concèntrica consisteix en què els elements d'un vector estandisposats en un ordre de fora cap endins, on fora són les posicions més allunyadesdel centre del vector (els subíndexos 1 i N , on length(v) = N). Per exemple, sitenim un vector de 5 posicions, el primer element aniria a la posició 1, el següenta la posició 5, el següent a la posició 2, el següent a la posició 4 i l'últim a laposició 3.

La funció ha de tornar TRUE si i només si els elements del vector x estandisposats en ordre concèntric al vector y. Assumiu que tots dos vectors tenenla mateixa mida (és a dir, no cal que ho comproveu). Per exemple, si

x = [2, 3, 1, 5, 4]y = [2, 1, 4, 5, 3]

llavors la funció torna TRUE.

2 3 1 5 4

?

SSSSSw

����� ?

�����

2 1 4 5 3

En aquest altre cas:x = [2, 3, 1, 4, 5]y = [2, 1, 4, 5, 3]

la funció tornarà FALSE.

Page 33: Introducció a la Informàtica. Exercicis Grau d'Estadísticarobert/teaching/estadistica/introduccio/... · Problema 43. Divisors . euF un programa que mostri per pantalla tots els

33

2 3 1 4 5

?

SSSSSw

����� ?

�����

2 1 4 5 3

Problema 102. Garbell d'Eratòstenes.Donat un enter N, feu una funció que retorni un vector amb tots els primers

�ns a N amb la tècnica del Garbell d'Eratòstenes.Aquesta tècnica és molt simple, i consisteix en posar tots els números de 2

�ns a N i anar marcant els que no són primers de la següent manera:

1. Marquem tots els elements com a primers.

2. Anem al primer número marcat. Sigui p aquest número.

3. Anem saltant de p en p elements i anem desmarcant els elements a lap-èssima posició com a divisibles (no-primers).

4. Ho fem mentre hi hagi números per desmarcar.

Per exemple, si N=10, tindríem primer:

2 3 4 5 6 7 8 9 10T T T T T T T T T

Ara busquem el primer element marcat de la llista. En aquest cas és el 2.Ara anem saltant de 2 en 2 i desmarquem es elements per on passem:

2 3 4 5 6 7 8 9 10T T T T T

Ara anem al següent element marcat, en aquest cas el 3, i fem la mateixaoperació:

2 3 4 5 6 7 8 9 10T T T T

En aquest cas només hem desmarcat el 9, ja que el 6 l'havíem desmarcatabans, ja que és múltiple de 2. Ara anem al següent element marcat, en aquestcas és el 5:

Page 34: Introducció a la Informàtica. Exercicis Grau d'Estadísticarobert/teaching/estadistica/introduccio/... · Problema 43. Divisors . euF un programa que mostri per pantalla tots els

34 CAPÍTOL 5. VECTORS

2 3 4 5 6 7 8 9 10T T T T

Aquí ja podem parar, ja que si anem al següent element marcat (el 7), quansaltem de 7 en 7 ja sortirem del vector. Per tant, ara la funció ha de tornarun vector amb els elements marcats. En aquest cas, el vector ha de contenir2, 3, 5, 7.

Problema 103. Intercalat.Feu una funció intercalat, que rep dos vectors x, y, i que retorna un vector

que és la intercalació dels elements de tots dos vectors. La intercalació delsvectors x i y es de�neix així:

x[1], y[1], x[2], y[2], . . .

La mida de tots dos vectors d'entrada no ha de ser necessàriament la mateixa.Si un vector té n elements més que l'altre, aquests n elements hauran d'anar al�nal del vector resultat. Per exemple, si tenim:

x = [1, 2, 3, 4]y = [10, 11, 12, 13, 14, 15]

(�xeu-vos que, en aquest cas, n = 2) la funció haurà de tornar:r = [1, 10, 2, 11, 3, 12, 4, 13, 14, 15]

Problema 104. Permutació.Feu una funció permutacio que, donat dos vectors d'entrada x, y, amb nom-

bres naturals positius, torni TRUE si i només si el vector x és una permutació delvector y. Òbviament, si tots dos vectors no tenen la mateixa mida, un no potser la permutació de l'altre. Per exemple, si

x = [1, 2, 3, 4, 3, 1]y = [1, 1, 3, 2, 3, 4]

llavors la funció torna TRUE. En aquest altre cas:x = [1, 2, 3, 4, 3, 1]y = [1, 2, 3, 2, 3, 4]

la funció tornarà FALSE.

Problema 105. Seqüència més llarga.Feu una funció sequencia que rep un vector que només conté 0's i 1's, i torna

la mida del subvector més llarg amb els mateixos nombres. Un subvector d'unvector és una secció d'elements consecutius. Per exemple, si v = [1, 2, 3, 4, 5, 6],

Page 35: Introducció a la Informàtica. Exercicis Grau d'Estadísticarobert/teaching/estadistica/introduccio/... · Problema 43. Divisors . euF un programa que mostri per pantalla tots els

35

un possible subvector de v seria [3, 4, 5], però [2, 3, 5] no ho seria. Per exemple,si:

v = [0, 0, 1, 1, 1, 1, 0, 0, 1, 0, 0, 0, 0, 0, 1, 1, 1]la funció sequencia torna 5, que és la mida del subvector:v = [0, 0, 1, 1, 1, 1, 0, 0, 1, 0, 0, 0, 0, 0︸ ︷︷ ︸

5

, 1, 1, 1]

Problema 106. Rangs.Feu una funció rangs, que rep un vector d'enters i torna un vector amb

les freqüències dels enters que hi ha al vector, ordenades creixentment. Perexemple, si el vector és:

v = [1, 3, 2, 1, 3, 2, 1, 3, 2, 4, 2, 2]

llavors la sortida serà:

r = [1, 3, 3, 5]

perquè la freqüència del 4 és 1, la freqüència de l'1 és 3, la freqüència del 3és 3 i la freqüència del 2 és 5.

Problema 107. Balanceig.Sigui v un vector de mida N . Diem que el seu balanceig és la mitjana del

valor absolut de la diferència entre els seus elements simètrics. Per exemple, sitenim el vector

3 5 1 5 2 3 2

el seu balanceig serà:

|3− 2|+ |5− 3|+ |1− 2|3

=1 + 2 + 1

3= 1.33

Fes una funció que rebi dos vectors i que torni TRUE si i només si el balanceigdel primer vector és estrictament menor que el del segon. Fixeu-vos que quanel nombre d'elements es senar, l'element del mig no es té en compte.

Per exemple, si tenim els vectors

v1 = 3 5 1 5 2 3 2

v2 = 4 6 2 9 1

tornarà TRUE ja que el balanceig de v1 és 1.33 i el de v2 és 3.En canvi, si tenim que:

Page 36: Introducció a la Informàtica. Exercicis Grau d'Estadísticarobert/teaching/estadistica/introduccio/... · Problema 43. Divisors . euF un programa que mostri per pantalla tots els

36 CAPÍTOL 5. VECTORS

v1 = 4 6 2 9 1

v1 = 3 5 1 5 2 3 2

la funció tornarà FALSE.

Problema 108. Baricentre.Heu de fer una funció que, donats dos vectors X i Y, que representen un

conjunt de punts en un espai bidimensional, torni cert si i només si el baricentredels punts és als vectors (és a dir, si hi ha una posició dels vectors on podemtrobar les dues components del baricentre).

Heu de programar una funció que es diu baricentre, que rep dos vectorsd'enters, i torna un booleà. Tots dos vectors tenen la mateixa mida N > 0.

El baricentre d'un conjunt de punts és un punt en què la dimensió X és lamitjana de la dimensió X de tots els punts, i la dimensió Y és la mitjana de ladimensió Y de tots els punts.

Per exemple, si tenim:

X <- c(3,4,5,2)Y <- c(5,3,1,1)

això correspon als punts:

P1 = (3,5)P2 = (4,3)P3 = (5,1)P4 = (2,1)

El baricentre serà el punt (3.5, 2.5) (la mitjana d'X i d'Y, respectivament).En aquest cas, la crida baricentre (X,Y) tornaria FALSE.

Si tenim:

X <- c(2,4,5,8,6)Y <- c(3,4,4,6,3)

llavors la crida a baricentre (X,Y) tornarà TRUE, ja que el baricentre (5, 4)és a X,Y.

Si tenim:

X <- c(2,4,5,8,6)Y <- c(3,4,3,4,6)

llavors la crida a baricentre (X,Y) tornarà FALSE, ja que el baricentre(5, 4) no és a X,Y.

Page 37: Introducció a la Informàtica. Exercicis Grau d'Estadísticarobert/teaching/estadistica/introduccio/... · Problema 43. Divisors . euF un programa que mostri per pantalla tots els

37

Problema 109. Pes Ponderat.El pes ponderat d'un vector és la mitjana dels valors absoluts de les dife-

rències entre un element del vector i el seu consecutiu. Formalment, ho de�nimcom a

N−1∑i=1

|v[i]− v[i + 1]|

N − 1

Feu una funció compara_pes(v) que rebi un vector, i torni TRUE si i noméssi hi ha alguna permutació de dos elements del vector que faci incrementar-neel pes ponderat. La mida del vector és sempre igual o més gran que 2. Perexemple, si el vector és

1 2 3

la funció haurà de tornar TRUE, ja que el el pes ponderat de v és |1−2|+|2−3|2 =22 = 1, però si permutem, per exemple les posicions 2 i 3:

1 3 2

llavors el pes ponderat és |1−3|+|3−2|2 = 32 > 1.

En canvi, si el vector és

1 3 2

la funció tornarà FALSE ja que qualsevol permutació de dos elements donaràun pes ponderat igual o menor.

Us podria ajudar el fet de tenir les funcions:

1. pes_ponderat(v). Aquesta funció retorna el pes ponderat del vector v.

2. pes_ponderat_amb_permutacio(v,i,j). Aquesta funció retorna el pesponderat del vector v amb la permutació dels valors de les posicions i,j.Aquesta funció pot òbviament cridar la funció pes_ponderat(v).

Problema 110. Pes Màxim.Fes una funció que rebi un enter M > 0 i un vector v de mida N > 1 (sempre

passarà que M < N) i que torni la suma dels M valors més grans del vectorv. Els valors del vector v poden estar repetits, i no han d'estar necessàriamentordenats.

Per exemple, si tenim:

M = 3 v1 = 3 5 1 5 2 3 2

Page 38: Introducció a la Informàtica. Exercicis Grau d'Estadísticarobert/teaching/estadistica/introduccio/... · Problema 43. Divisors . euF un programa que mostri per pantalla tots els

38 CAPÍTOL 5. VECTORS

llavors tenim que la funció ha de tornar 13, ja que és la suma dels 3 valorsmés grans del vector: 5 + 5 + 3 = 13.

Si M = 5 llavors hauria de tornar 5 + 5 + 3 + 3 + 2 = 18.Aquest problema es pot resoldre de diferents maneres. Per exemple, podeu

tenir un vector on aneu desant els màxims del vector v i anar-los eliminant delvector original. Una altra manera pot ser calcular el màxim del vector, eliminar-lo del vector (o marcar-lo de manera que deixi de ser un màxim) i acumular-loen una variable que faci de sumatori. Si feu una cosa així, penseu que si elmàxim és el valor 5 (posem per cas) llavors no heu d'eliminar tots els cincs delvector, sinó només un d'ells (mireu l'exemple anterior).

Problema 111. Semiordenat.Feu una funció que, donat un vector v, que conté nombres naturals estricta-

ment més grans que zero, torni TRUE si i només sí el vector v està semiordenat.Un vector v està semiordenat si, per separat, els nombres parells del vector

estan ordenats, i els nombres senars també estan ordenats, però no necessària-ment tots junts. Per exemple, el vector:

v = [2, 1, 4, 3, 6, 5, 8, 7]

està semiordenat, perquè els senars ho estan, i els parells també. Però elvector:

v = [1, 2, 3, 5, 3, 34, 36, 38]

no ho està. Òbviament, si un vector està ordenat, també està semiordenat,però a l'inrevés no és necessàriament cert.

Important: Aquest exercici es pot fer amb un sol bucle.

Problema 112. Entropia.Feu una funció que, donat un vector v, que conté nombres naturals entre 1

i N, en torni l'entropia de Shannon.L'entropia de Shannon per a un conjunt X es calcula amb la fórmula:

H(X) = −∑x∈X

p(x) logb p(x). (5.1)

En el nostre cas, substituïm la probabilitat p(x) d'un element x ∈ X per lafreqüència dins del vector v. D'aquesta manera, la fórmula que cal calcular és:

H(X) = −∑

x∈1:Nfreq(x, v) log2((freq(x, v))). (5.2)

on freq(x, v) és la freqüència del nombre x al vector v.

Page 39: Introducció a la Informàtica. Exercicis Grau d'Estadísticarobert/teaching/estadistica/introduccio/... · Problema 43. Divisors . euF un programa que mostri per pantalla tots els

39

Problema 113. Dimensió Euclidiana.Heu de fer una funció que, donats dos vectors X i Y, que representen un

conjunt de punts en un espai bidimensional, i una distància màxima dist_max,torni cert si i només si no hi ha cap distància euclidiana entre dos punts delvector que sigui més gran que dist_max. La distància euclidiana (en un espaibidimensional) entre dos punts (xi, yi) i (xj , yj) és:√

(xi − xj)2 + (yi − yj)2

Heu de programar una funció que es diu limit, que rep dos vectors d'entersi un enter, i torna un booleà. Tots dos vectors tenen la mateixa mida N > 0.

Per exemple, si tenim:

X <- c(3,4,5,2)Y <- c(5,3,1,1)

això correspon als punts:

P1 = (3,5)P2 = (4,3)P3 = (5,1)P4 = (2,1)

En aquest cas, la crida limit (X,Y,4) tornaria FALSE, ja que la distànciaentre els punts P1 i P2 és 4.47 > 4.

Si tenim:

X <- c(2,4,5,8,6)Y <- c(3,4,4,6,3)

llavors la crida a limit (X,Y,7) tornarà TRUE, ja que la distància euclidianamés gran que hi ha és entre els punts P1 i P4, que és 6.7 ≤ 7.

Problema 114. Vectors Intercalables.Siguin A i B dos vectors ordenats d'enters que poden tenir mides diferents.

Diem que A i B són intercalables si la seva intercalació també es manté orde-nada. La intercalació de dos vectors A i B és un vector que té els valors de totsdos intercalats. Per exemple, si tenim que:

A= 1 3 15 26 B = 2 5 19 33 54

llavors A i B són intercalables, ja que el vector intercalat:

1 2 3 5 15 19 26 33 54

es manté ordenat. En canvi, si tenim:

Page 40: Introducció a la Informàtica. Exercicis Grau d'Estadísticarobert/teaching/estadistica/introduccio/... · Problema 43. Divisors . euF un programa que mostri per pantalla tots els

40 CAPÍTOL 5. VECTORS

A= 1 3 15 26 B = 2 5 9 33 54

A i B no són intercalables, ja que el vector intercalat:

1 2 3 5 15 9 26 33 54

no està ordenat. Feu una funció que rebi un parell de vectors i torni TRUE sii només si tots dos vectors són intercalables.

IMPORTANT: Per a fer aquest problema, tingueu en compte que no cal

crear el vector intercalat.

Problema 115. Ordre en Vectors.Siguin A i B dos vectors d'enters. Diem que es compleix la relació A ≤ B si

i només si ∀a ∈ A : ∀b ∈ B : a ≤ b. Per exemple, si tenim:

A= 1 3 2 5 B = 6 5 9

llavors tenim que A ≤ B, mentre que si:

A= 1 3 2 5 B = 6 5 9 3 15

llavors tenim que A 6≤ B. Feu una funció que rebi dos vectors A i B ique retorni TRUE si i només si es compleix A ≤ B. Tingueu en compte queels vectors poden tenir mides diferents i que els elements que contenen no hand'estar necessàriament ordenats.

Problema 116. Ordenació.En aquest problema el que volem fer és ordenar els elements d'una seqüència

afegint els elements de la seqüència en un vector demanera ordenada. Aquestproblema consta de dues parts.

(1) Implementeu una funció que rep un vector ordenat d'enters V i un enterelem i retorna un vector que conté tots els elements del vector V i l'enter elemi que, a més, també està ordenat. Per exemple, si elem és 7 i

V = 1 2 3 5 15 19 26 33 54

la funció retorna el vector

1 2 3 5 7 15 19 26 33 54

Cal tenir en compte que aquesta funció es pot implementar de

manera trivial fent servir la funció sort. òbviament, es tracta de fer-

ho sense aquesta funció.La segona part de l'exercici consisteix en fer un programa que llegeixi una

seqüència del canal d'entrada i que insereix els elements que llegeix a un vectorque cal mantenir sempre ordenat. Tingueu en compte que cal afegir els elementsde la seqüència un a un. és a dir, no es tracta de llegir tota la seqüència i posar-la en un vector, i després iterar sobre aquest vector per a crear el vector ordenat.Cal utilitzar la funció de l'apartat (1).