|
1.
Equació de segon grau
Com a complement de l'exercici 6 del mòdul 1, feu un programa amb les modificacions que
considereu necessàries per tal que el programa comprovi les dades
introduïdes i:
-
si el coeficient a és
0 ha de calcular la solució de l'equació de primer grau bx+c = 0.
-
si el coeficient a
és diferent de 0, llavors:
-
si el discriminant és
positiu ens ha d'indicar que hi ha dues solucions i les ha d'escriure.
-
si el discriminant és
0 ens ha d'indicar que hi ha una única solució i l'ha de escriure
(en aquest cas, el fet de sumar o restar l'arrel quadrada del
discriminant no suposarà dues solucions..
-
si el discriminant és
més petit que 0 ens ha d'indicar que l'equació no té solucions reals.
Anomeneu l'arxiu font:
m3e1.cpp i envieu-lo. No envieu l'arxiu executable.
|
|
2.
Progressions geomètriques
Una progressió geomètrica
és una successió el terme general de la qual és de la forma:
a(n) = a·r n
Per exemple, si a = 2 i r =3,
els primers n=4 termes de la progressió seran: {6, 18, 54, 162}
La suma dels n primers
termes d'una successió geomètrica es pot calcular amb la fórmula:

on a(1) és el primer terme, r la raó
i n el nombre de termes.
Per exemple:

Escriviu un programa que,
introduïts els valors d'a, r i n, els primers del
tipus double i l'últim int, imprimeixi els n
primers termes de la successió a(n) i calculi la suma d'aquests n
primers termes fent la suma de tots els termes . Afegiu alguna línia per tal de comprovar la fórmula donada
de la suma dels n primers termes d'una progressió geomètrica.
Anomeneu l'arxiu
font: m3e2.cpp i envieu-lo. No envieu l'arxiu executable.
|
|
3. El
MCD de tres nombres
A la pràctica
3 s'ha vist una funció per calcular el màxim comú divisor de dos
números. Si tenim tres números en lloc de dos es pot fer servir que:
MCD(a,b,c)=MCD(MCD(a,b),c))
Per exemple, si volem el MCD de 120, 140 i
210, podem calcular:
MCD(120,140)=20 i després MCD(20,210)=10,
per tant, MCD(120,10,210)=10.
Escriviu un programa que
contingui la funció vista a la pràctica 3 i la faci servir per calcular el
màxim comú divisor de tres números.
Anomeneu l'arxiu font: m3e3.cpp
i envieu-lo. No envieu l'arxiu executable.
|
|
4. L'algoritme 3n+1
El problema que es planteja aquí
és estudiar un dels algoritmes més clàssics no resolts de la ciència de
l'Algorísmica: l'algorisme 3n+1. Considerem el següent algoritme:
-
entrar n
-
imprimir n
-
si n =1 aleshores ACABA EL
PROGRAMA
-
si n es senar aleshores
n:=3n+1
-
en cas contrari, és a dir,
si n és parell, aleshores n:=n/2
-
tornar a la línia 2
Per exemple, donat el número 22
el programa imprimiria la següent seqüència de números: 22 11 34 17 52 26 13
40 20 10 5 16 8 4 2 1. Aquesta seqüència rep el nom de cicle del
número 22. Aquest és un cicle de longitud 16.
És una conjectura no demostrada que
aquest algorisme acaba sempre, és a dir, que el cicle de tot nombre enter és
un cicle finit.
Feu un programa que escrigui el
cicle d'un número entrat per teclat. Podeu fer servir el programa per
investigar cicles grans i cicles petits. Per exemple, els números de la
forma 2n tenen un cicle curt...
Anomeneu l'arxiu font: m3e4.cpp
i envieu-lo. No envieu l'arxiu executable.
|
|
Problemes
complementaris
Aquests exercicis serveixen per completar
aquest mòdul però suposen una ampliació voluntària. No és necessari
lliurar aquests exercicis. No obstant això, és convenient fer-los i
lliurar-los.
5. Canvis de base de numeració I
Escriviu un programa que llegeixi un nombre natural
més petit que 256 i escrigui la seva representació en binari. Per això
heu de fer divisions successives per 2 i quedar-vos amb les diferents
restes. Per exemple, per calcular la representació binària del número 100
farem:
|
3/2=1 |
6/2=3 |
12/2=6 |
25/2=12 |
50/2=25 |
100/2=50 |
1 |
3%2=1 |
6%2=0 |
12%2=0 |
25%2=1 |
50%2=0 |
100%2=0 |
per tant 10010 = 11001002
Feu que el programa faci la comprovació que el
número introduït sigui més petit que 256 i, en cas contrari, que presenti un
missatge de error i torni a demanar un altre número.
Afegiu al programa anterior una funció que permeti
fer representació decimal d'un número en base 2. Per això només heu de
sumar 2n si en la posició n del número binari hi ha un
1. Exemple:
11001002 = 26+25+22=10010
Anomeneu l'arxiu font: m3e5.cpp
i envieu-lo. No envieu l'arxiu executable.
|
|
6. Canvis de base de numeració II
Per últim, escriviu un programa que permeti fer un
canvi de base de qualsevol base inicial a qualsevol base final. En el cas
que la base sigui més gran que 10. Feu servir les lletres a,b,c,... per
representar els valors 10,11,12,.... És especialment útil la base
hexagesimal o base 16 en la qual es fan servir les lletres a, b, c, d, e i f com
a representació dels números 10,11,12,13,14 i 15.
Anomeneu l'arxiu font: m3e6.cpp
i envieu-lo. No envieu l'arxiu executable.
|
 |
 |