Docsity
Docsity

Prepara tus exámenes
Prepara tus exámenes

Prepara tus exámenes y mejora tus resultados gracias a la gran cantidad de recursos disponibles en Docsity


Consigue puntos base para descargar
Consigue puntos base para descargar

Gana puntos ayudando a otros estudiantes o consíguelos activando un Plan Premium


Orientación Universidad
Orientación Universidad


Programació. Problemes resolts, Ejercicios de Electrónica de las Telecomunicaciones

Asignatura: Programacio, Profesor: Franch, X, Carrera: Ciències i Tecnologies de Telecomunicació, Universidad: UPC

Tipo: Ejercicios

2014/2015

Subido el 06/07/2015

retallador
retallador 🇪🇸

4

(1)

1 documento

1 / 28

Toggle sidebar

Esta página no es visible en la vista previa

¡No te pierdas las partes importantes!

bg1
125
Introducció a la programació. Problemes resolts
Franch - Marco
Molinero - Petit - Xhafa
9-788483-018811
L’objectiu d’aquest llibre ha estat confeccionar una
obra que s’adaptés a les característiques de les as-
signatures de programació bàsica. Per això, s’ha
procurat que els materials cobreixin els aspectes
bàsics i fonamentals en un curs d’introducció a la
programació en el vessant aplicat. Els materials del
llibre inclouen exercicis d’autoavaluació, problemes
i projectes resolts. El llibre utilitza un subconjunt bà-
sic del llenguatge de programació C++ per descriure
els algorismes en el paradigma de programació im-
perativa.
Els autors del llibre són doctors en Informàtica pel
Departament de Llenguatges i Sistemes Informàtics
de la UPC i tenen una àmplia experiència com a
professors de les assignatures de programació.
EDICIONS UPC
AULA POLITÈCNICA
/ INFORMÀTICA
X. Franch - J. Marco - X. Molinero
J. Petit - F. Xhafa
Introducció a la programació
Problemes resolts
pf3
pf4
pf5
pf8
pf9
pfa
pfd
pfe
pff
pf12
pf13
pf14
pf15
pf16
pf17
pf18
pf19
pf1a
pf1b
pf1c

Vista previa parcial del texto

¡Descarga Programació. Problemes resolts y más Ejercicios en PDF de Electrónica de las Telecomunicaciones solo en Docsity!

EDICIONS UPC

AULA POLITÈCNICA

/ INFORMÀTICA

X. Franch - J. Marco - X. Molinero

J. Petit - F. Xhafa

Introducció a la programació

Problemes resolts

AULA POLITÈCNICA 125

/ INFORMÁTICA

Introducció a la programació

Problemes resolts

EDICIONS UPC

AULA POLITÈCNICA

/ INFORMÀTICA

X. Franch - J. Marco - X. Molinero

J. Petit - F. Xhafa

Introducció a la programació

Problemes resolts

Primera edició: setembre de 2006

Disseny de la coberta: Jordi Calvet

© els autors, 2006

© Edicions UPC, 2006 Edicions de la Universitat Politècnica de Catalunya, SL Jordi Girona Salgado 31, 08034 Barcelona Tel.: 934 016 883 Fax: 934 015 885 Edicions Virtuals: www.edicionsupc.es E-mail: [email protected]

ISBN: 978-84-9880-162-

Són rigor osament pr ohibides, sense l'autorització escrita dels titulars del copyright, sota les sancions establertes a la llei, la r eproducció total o par cial d'aquesta obra per qualsevol pr ocediment, inclosos la reprografia i el tractament informàtic, i la distribució d'exemplars mitjançant lloguer o préstec públics.

iv Introducci´o a la Programaci´o — Problemes Resolts

Per fer funcionar aquests algorismes escrits en C++, el lector nom´es haur`a de reordenar els diferents fragments de cada programa i afegir-hi les cap¸caleres que, per raons de brevedat, no hem repetit a cada soluci´o. En particular, nom´es s’utilitzen unes poques funcionalitats de les llibreries , , i .

Voldr´ıem agrair als nostres companys del departament de Llenguatges i Sistemes In- formatics que han fet docencia en aquestes assignatures la seva participaci´o en la confecci´o d’alguns dels enunciats dels problemes que apareixen en aquests llibre, aix´ı com els seus comentaris sobre versions preliminars del material.

Esperem que el llibre sigui d’utilitat als estudiants de programaci´o de la UPC i d’altres universitats de parla catalana.

Barcelona, juliol de 2006

Els autors

´Index

Pr`oleg i

  • I Exercicis i problemes ´Index v
  • 1 Introducci´o - Exercicis
    • 1.1 La congru`encia de Zeller per a calendaris
    • 1.2 El valor clau per a calendaris
  • 2 Seq¨u`encies - Exercicis
    • 2.1 Misteri
    • 2.2 Vaques boges
    • 2.3 El control de qualitat
    • 2.4 Infraccions
    • 2.5 El supermercat Fruita Madura
    • 2.6 Productes caducats
    • 2.7 El valor actual
    • 2.8 La benzinera de Vilanova
    • 2.9 El p`arquing del Campus Nord
    • 2.10 El pol´ıgon equilateral
    • 2.11 La Pica d’Estats
    • 2.12 Valls minimals
    • 2.13 El torneig de futbol
  • 3 Accions i funcions vi Introducci´o a la Programaci´o — Problemes Resolts - Exercicis
    • 3.1 No ho s´e
    • 3.2 Tampoc no ho s´e
    • 3.3 Qui ho sap?
    • 3.4 Inc`ognita
    • 3.5 Comparar dates
    • 3.6 Articles caducats
    • 3.7 Factorial
    • 3.8 M`axim com´u divisor
    • 3.9 Llaunes
    • 3.10 Intervals
    • 3.11 Sumar d´ıgits parells de f (x)
    • 3.12 La pesta porcina
    • 3.13 Leibniz i π
  • 4 Taules - Exercicis
    • 4.1 Sobre la taula
    • 4.2 Pantans
    • 4.3 L’Avi Pep
    • 4.4 El p`arquing
    • 4.5 Vols
    • 4.6 Punt de creu
    • 4.7 Vector suma columnes
    • 4.8 Files i columnes perpendiculars
    • 4.9 El valor propi
    • 4.10 La planificaci´o de tasques
    • 4.11 La suma per capes
    • 4.12 El monitor MonocromTM
    • 4.13 La codificaci´o de missatges
    • 4.14 Generaci´o de permutacions
    • 4.15 El segment nul m´es llarg
    • 4.16 Els gratacels de Diagonal Mar
    • 4.17 El quadrat m`agic
  • 5 Tuples i estructures de dades - Exercicis
    • 5.1 La farmac`eutica de Sant Cugat
    • 5.2 El parc m`obil d’Igualada
    • 5.3 La biblioteca de Castelldefels
    • 5.4 La Universitat de Matar´o
    • 5.5 L’associaci´o de titulats
    • 5.6 La xarxa de concessionaris
    • 5.7 El museu de pintura
    • 5.8 Prov´ıncies
    • 5.9 L’hospital de Manresa
    • 5.10 Departaments
    • 5.11 Polinomis
    • 5.12 El traductor autom`atic
  • 6 Projectes ´Index vii
    • 6.1 Borsa
    • 6.2 B`asquet
  • II Problemes resolts
  • 1 Introducci´o
    • 1.1 La congru`encia de Zeller per a calendaris
    • 1.2 El valor clau per a calendaris
  • 2 Seq¨u`encies
    • 2.1 Misteri
    • 2.2 Vaques boges
    • 2.3 El control de qualitat
    • 2.4 Infraccions
    • 2.5 El supermercat Fruita Madura
    • 2.6 Productes caducats
    • 2.7 El valor actual
    • 2.8 La benzinera de Vilanova
    • 2.9 El p`arquing del Campus Nord
    • 2.10 El pol´ıgon equilateral
    • 2.11 La Pica d’Estats
    • 2.12 Valls minimals
    • 2.13 El torneig de futbol
  • 3 Accions i funcions
    • 3.1 No ho s´e
    • 3.2 Tampoc ho s´e
    • 3.3 Qui ho sap?
    • 3.4 Inc`ognita
    • 3.5 Comparar dates
    • 3.6 Articles caducats
    • 3.7 Factorial
    • 3.8 M`axim com´u divisor
    • 3.9 Llaunes
    • 3.10 Intervals
    • 3.11 Sumar d´ıgits parells de f (x)
    • 3.12 La pesta porcina
    • 3.13 Leibniz i π
  • 4 Taules
    • 4.1 Sobre la taula
    • 4.2 Pantans
    • 4.3 L’Avi Pep
    • 4.4 El p`arquing
    • 4.5 Vols
    • 4.6 Punt de creu
    • 4.7 Vector suma columnes
    • 4.8 Files i columnes perpendiculars
    • 4.9 El valor propi
    • 4.10 La planificaci´o de tasques viii Introducci´o a la Programaci´o — Problemes Resolts
    • 4.11 La suma per capes
    • 4.12 El monitor monocromTM
    • 4.13 La codificaci´o de missatges
    • 4.14 Generaci´o de permutacions
    • 4.15 El segment nul m´es llarg
    • 4.17 El quadrat m`agic
    • 4.16 Els gratacels de Diagonal Mar
  • 5 Tuples i estructures de dades
    • 5.1 La farmac`eutica de Sant Cugat
    • 5.2 El parc m`obil d’Igualada
    • 5.3 La biblioteca de Castelldefels
    • 5.4 La Universitat de Matar´o
    • 5.5 L’associaci´o de titulats
    • 5.6 La xarxa de concessionaris
    • 5.7 El museu de pintura
    • 5.8 Prov´ıncies
    • 5.9 L’hospital de Manresa
    • 5.10 Departaments
    • 5.11 Polinomis
    • 5.12 El traductor autom`atic
  • 6 Projectes
    • 6.1 Borsa
    • 6.2 B`asquet

Introducci´o

Exercicis

  1. Penseu en totes les activitats que vareu fer ahir. En quines d’elles sou conscients d’haver usat un sistema informatic? Quines eren les seves entrades? Quines eren les seves sortides? Quins errors es podien produir?
  2. Expliqueu a un turista perdut com anar de la Pla¸ca Major a l’Aeroport del Prat tot utilitzant transports p´ublics en una dia de vaga de taxis.
  3. Expliqueu com multiplicar dos nombres a un nen que sap sumar i coneix les taules de multiplicar.
  4. Qu`e ´es un algorisme?
  5. Digueu quin ´es el contrari de les afirmacions seg¨uents:
    • a ´es m´es petit que b.
    • Plou i fa sol.
    • No plou i no fa sol.
    • Dues rectes tenen un punt en com´u.
    • Tots els camins porten a Roma.
    • Tots els `anecs s´on blancs i volen.
    • P i Q.
    • P o Q.
    • P o Q per`o no les dues.
  6. Feu les taules de veritat de no (a i b) i de no a o no b. Quina ´es la vostra conclusi´o? Feu el mateix per no (a o b) i per no a i no b.
  7. Feu les taules de veritat de no (a i b i c) i de no a o no b o no c. Quina ´es la vostra conclusi´o? Feu el mateix per no (a o b o c) i per no a i no b i no c.
  8. Epimenides de Creta va afirmar: “Tots els cretencs s´on uns mentiders”. Que en penseu?

Introducci´o 5

  • (j-k) / x
  • (j-k) / int(x)
  • (i * j - z >= x * y * y) == (not p and q)
  • |x - y| + z
  • √ x > 0
  • x^2 − y^2
  • not (p and q and r and c>=’A’)
  • (p + r) + i
  • i <= j <= k
  • p == q == r
  • 3 * i - (j*z) * x
  • a >= b and b > c
  • (3x) / (3.1416y))
  • x + y + z i
  1. Expliqueu com es comporten els operadors de divisi´o entera i m`odul (/ i %) amb operands negatius. Calculeu 7 / 4, -7 / 3, 7 / -3, -7 / -3, 7 % 3, -7 % 3, 7 % -3, i -7 % -3.
  2. Donades aquestes inicialitzacions:

int z = 0; int u = 1; double x = 3.5; bool t = true;

avalueu les expressions seg¨uents i digueu quines poden produir problemes:

  • not (z <= 1 and x >= 0 and t)
  • z == 0 and x <= 0 or u == 1 and x >= 0
  • u/z > -
  • z != 0 and u/z > -
  • u/z > -2 and z != 0
  • z == 0 or u/z > -
  • u/z > -2 or z == 0
  • z == 0 or 24%z != 1
  • z == 0 and 24%z != 1
  • x == 3.
  1. Digueu quina ´es la sortida de cadascun dels programes seg¨uents sense executar-los:

// Programa 1 int main () { int a = 21, b = 666; cout << a + b << endl; }

// Programa 2 int main () { int a = 24, b = 32; cout << a << " + " << b << " = " << a + b << endl; }

6 Introducci´o a la Programaci´o — Problemes Resolts

// Programa 3 int main () { int a = 12, b = 8; if (a >= b) cout << a << endl; else cout << b << endl; }

// Programa 4 int main () { int n = 10; for (int i = 1; i <= n; ++i) { cout << i << endl; } }

// Programa 5 int main () { int n = 10; for (int i = 0; i < n; ++i) { cout << i << endl; } }

// Programa 6 int main () { int n = 10, i; for (i = 0; i < n; ++i) { cout << i << endl; } cout << i << endl; }

// Programa 7 int main () { int n = 5; for (int i = 0; i < n; ++i) { for (int j = 0; j < n; ++j) { cout << i << ’,’ << j << endl; } } }

// Programa 8 int main () { int n = 5; for (int i = 0; i < n; ++i) { for (int j = 0; j < i; ++j) cout << i << ’,’ << j << endl; } }

8 Introducci´o a la Programaci´o — Problemes Resolts

  1. Escriviu expressions que, donat un real r, calculin.
    • la part entera per defecte de r,
    • la part entera per exc´es de r,
    • el valor enter m´es proper a r.
  2. Escriviu expressions booleanes que, donat un car`acter c, indiquin.
    • si c ´es una lletra min´uscula,
    • si c ´es una lletra maj´uscula,
    • si c ´es un d´ıgit,
    • si c no ´es ni min´uscula ni maj´uscula ni d´ıgit,
    • si c ´es una vocal,
    • si c ´es una consonant,
    • si c ´es un s´ımbol de puntuaci´o.
  3. Escriviu una expressi´o entera que es correspongui al valor d’un d´ıgit donat (caracters de ‘ 0 ’ a ‘ 9 ’). Per exemple, per al caracter ‘ 3 ’, cal donar l’enter 3.
  4. Escriviu una expressi´o que converteixi un enter entre 0 i 9 al seu d´ıgit corresponent. Per exemple, per a l’enter 3, cal donar el car`acter ‘ 3 ’.
  5. Dissenyeu un algorisme que, donats dos intervals reals [a 1 , b 1 ] i [a 2 , b 2 ] digui si el primer es troba dins del segon.
  6. Dissenyeu un algorisme que, donats dos intervals reals [a 1 , b 1 ] i [a 2 , b 2 ] calculi l’in- terval corresponent a la seva intersecci´o o indiqui que ´es buida.
  7. Dissenyeu un algorisme que, donades dues hores del rellotge h 1 :m 1 :s 1 i h 2 :m 2 :s 2 , indiqui si una altra hora h:m:s es troba entre la primera i la segona.
  8. Un any de traspas ´es un any civil que consta de 366 dies civils. S´on anys de traspas tots els m´ultiples de 4 que no ho s´on de 100, o que s´on de 100 pero tamb´e de 400. Escriviu una expressi´o que indiqui si una variable entera any ´es de traspas o no.
  9. Dissenyeu un algorisme que llegeixi dos enters i n’escrigui el m`axim.
  10. Dissenyeu un algorisme que llegeixi dos enters i els escrigui ordenats.
  11. Dissenyeu un algorisme que llegeixi tres enters i els escrigui ordenats.
  12. Dissenyeu un algorisme que llegeixi quatre enters i els escrigui ordenats.
  13. Dissenyeu un algorisme que llegeixi un enter que representa una data en format ddmmaaaa i escrigui el dia, el mes i l’any corresponent.
  14. Dissenyeu un algorisme que llegeixi un enter que representa una hora del rellotge en format hhmmss i escrigui l’hora, els minuts i els segons corresponents.
  15. Dissenyeu un algorisme que llegeixi dues dates (dia, mes i any de cadascuna) i digui si la primera ´es anterior en el temps a la segona.
  16. Dissenyeu un algorisme que digui si un enter positiu ´es primer o no.
  17. Dissenyeu un algorisme que escrigui el producte de factors primers d’un n´umero natural.

Introducci´o 9

  1. Dissenyeu un algorisme que escrigui les taules de multiplicar del 0 al 9.
  2. Dissenyeu un algorisme que intercanvi¨ı el valor de dues variables tot usant una variable auxiliar.
  3. Dissenyeu un algorisme que intercanvi¨ı el valor de dues variables enteres sense usar cap variable auxiliar.
  4. Qu`e penseu de l’algorisme seg¨uent?

int x = ..., i = 10; while (i > 0) { if (x == x) i = i + 1; else i = i - 1; }

  1. Qu`e penseu de l’algorisme seg¨uent?

int i = ...; while (i != 0) i = i - 2;

  1. Simplifiqueu l’algorisme seg¨uent:

int x = ..., y = ...; bool iguals; if (x == y) iguals = true; else iguals = false;

  1. Un mag diu: “Pensa’t un n´umero. Multiplica’l per dos. Suma-li 34. Divideix-lo per dos. Treu-li el n´umero que havies pensat. Te’n queden 17!” Qu`e en penseu?

1.1 La congru`encia de Zeller per a calendaris

La congruencia de Zeller ´es un calcul que permet obtenir el dia de la setmana per a una data qualsevol del calendari gregori`a. Donada una data determinada pel triplet 〈d, m, a〉, on d ´es el dia del mes, m ´es el mes de l’any i a ´es l’any,

  1. Se li resten dues unitats al mes m i si d´ona zero o menys se li suma 12 al mes i se li resta una unitat a l’any. El nou mes obtingut l’anomenem m′^ i el nou any a′.
  2. Es calcula la cent´uria c (els dos primers d´ıgits de l’any) a partir de l’any a′.
  3. Es calcula l’any dins la cent´uria y (els dos darrers d´ıgits de l’any) a partir de l’any a′.
  4. Es calcula f = b 2. 6 m′^ − 0. 2 c + d + y + by/ 4 c + bc/ 4 c − 2 c, on bxc ´es la part entera per defecte de x.
  5. f modul 7 representa el dia de la setmana segons la correspondencia seg¨uent: 0 = diumenge, 1 = dilluns, ...