Enrere Mòdul 4
Fonaments de programació. Llenguatge C/C++---
Exercicis

 
1. Funció recursiva de la potència entera d'un nombre

Escriviu una funció, el protocol de la qual sigui:

double pot(double base, int exponent)

Aquesta funció ha de calcular de forma recursiva el nombre que resulta d'elevar la base a l'exponent. Per això heu de fer servir que bn = b · bn - 1.

Anomeneu l'arxiu font m4e1.cpp.

 

2. L’arrel digital d’un nombre

L'arrel digital d'un nombre és la que resulta de sumar els seus dígits i, si aquesta suma és més gran o igual a 10, tornar a fer la suma dels dígits d'aquesta suma i així successivament fins que s'obté un nombre d'un dígit. Per exemple:

AD(1523) = AD(1 + 5 + 2 + 3) = AD(11) = 2

AD(42513) = AD(4 + 2 + 5 + 1 + 3) = AD(15) = 6

Feu un programa que escrigui l'arrel digital d'un nombre natural. Podeu fer tant una versió iterativa com una recursiva.

Anomeneu l'arxiu font m4e2.cpp. 

 

3. Endevina el nombre

El programa genera un nombre aleatori entre 1 i 1.000 i l’usuari/ària mira d’endevinar-lo. L’aplicació en tot moment recolza l’usuari/ària a partir del nombre que creu que és,  i mostra entre quins nombres es troba la dada que ha d'endevinar.

El programa ha generat un nombre entre 0 i 1.000.

Quin creus que és? 456

El nombre es troba entre 456 i 1.000.

Quin creus que és? 700

El nombre es troba entre 456 i 700.

Quin creus que és? 500

El nombre es troba entre 500 i 700.

Quin creus que és? 625

El nombre es troba entre 500 i 625.

Quin creus que és? 615

El nombre es troba entre 615 i 625.

Quin creus que és? 619

CORRECTE. Has endevinat el nombre al 6è intent.

Anomeneu l'arxiu font m4e3.cpp. 

 

4. Successió de Fibonacci

Seguint les indicacions del resum teòric respecte a la successió de Fibonacci, feu un programa que mostri els n primers termes d'aquesta successió, essent n un nombre enter entrat per teclat.

Anomeneu l'arxiu font m4e4.cpp 

 

5. Simulació del llançament de tres daus

Seguint l'esquema de la pràctica 6, feu una simulació del llançament de tres daus 100.000 cops i verifiqueu d'aquesta manera que la probabilitat de treure suma 9 i suma 10 és diferent. Només fa falta que comptabilitzeu els cops que surt 9 i 10 i que feu que surtin per pantalla les freqüències absolutes i relatives dels esdeveniments: suma 9 i suma 10.

Anomeneu l'arxiu font m4e5.cpp. 

 

Problemes complementaris

Aquests exercicis serveixen per completar aquest mòdul, però suposen una ampliació voluntària. No és necessari entregar-los. No obstant això, és convenient fer-los i lliurar-los.

 

6. Càlcul d'una àrea pel mètode d'acceptació-rebuig

Seguint les pautes de la pràctica 7, trobeu l'àrea del recinte del quadrat de costat 2 que queda a sobre de la paràbola y = x2.

El dibuix de l'àrea que es vol calcular és la part ombrejada del dibuix adjunt. Els vèrtexs del rectangle són (-1, 0), (-1,1), (1,1) i (1, 0).

 

El procés ha de consistir a generar punts del rectangle, és a dir, parells de nombres aleatoris:

  • x, un nombre aleatori entre -1 i 1 (exactament igual que a la pràctica 7)
  • y, un nombre aleatori entre 0 i 1

Els punts de la zona d'acceptació compleixen que y > x2.

Podeu comprovar el resultat obtingut amb el valor exacte d'aquesta àrea, que és 4/3.

Anomeneu l'arxiu font m4e6.cpp. 

 

7. Nombres combinatoris (II)

A l'exercici 3 s'ha proposat un programa que contingui una funció que calculi un nombre combinatori fent servir la funció factorial. En molts casos, el càlcul d'un nombre combinatori es pot simplificar si en lloc de fer servir la fórmula:

s'utilitza aquesta altra equivalent:

La raó és que n! pot ser molt més gran que el numerador de la fórmula anterior, i, per aquest motiu, es pot produir un error d'overflow o sobrecàrrega, a més que el temps en el càlcul de la segona fórmula és més petit.

Feu un programa que implementi la funció combinatori de la segona forma i compareu els resultats amb la funció de l'exercici 3 amb nombres combinatoris com:

Anomeneu l'arxiu font m4e7.cpp. 

 
8. Nombres combinatoris (III)

Encara hi ha una altra forma d'implementar el càlcul dels nombres combinatoris; es tracta de fer servir la relació:

Per tant, es pot definir una funció recursiva en la qual els casos de sortida siguin:

Si n = m          i si m = 0        

Implementeu aquesta funció. Anomeneu l'arxiu font m4e8.cpp.

9. Càlcul de nombres combinatoris

Fent servir la funció factorial definida al resum teòric, heu de construir una funció que calculi el valor del nombre combinatori:

sabent que es calcula fent servir la fórmula:

Aquest nombre representa el nombre de combinacions diferents de m elements que es poden formar amb n elements. Per exemple, amb 4 elements hi ha:

combinacions.

Si els 4 elements són {a,b,c,d}, aquestes 6 combinacions són:

{a,b} , {a,c} , {a,d} , {b,c} , {b,d} , {c,d}

Feu que el programa comprovi que n sigui més gran o igual a m.

Anomeneu l'arxiu font: m4e9.cpp 

 

10. Joc del set

També anomenat Over and Under Seven, és un joc de casino d’acció ràpida en el qual les apostes es determinen amb un sol tir de dos daus.

Objectiu:

Apostar pel fet que sortirà un nombre major, menor o igual a 7.

Els jugadors aposten a MÉS, MENYS o SET. Si el resultat d’un tir és de menys de 7, el casino pagarà els diners apostats a tots aquells que han apostat a MENYS i es quedarà amb les apostes d’aquells que han jugat a MÉS o SET.

Si el resultat del tir és més de 7, el casino pagarà els diners apostats a tots aquells que han apostat a MÉS i es quedarà amb les apostes d’aquells que han jugat a MENYS o SET.

Si surt un 7, el casino pagarà 3 a 1 (o 4 a 1) allò apostat a tots aquells que han jugat a 7 i s'emportarà totes les apostes d’aquells que han jugat a MÉS o MENYS.

Desenvolupament del joc

Els jugadors aposten a MÉS, MENYS o SET. El programa llança els dos daus i dóna la suma. A continuació, paga o no les apostes dels diferents jugadors.

En tot moment al monitor es mostren les dades següents:

. Saldo actual de cada jugador

. Aposta de la jugada

 Després de la jugada, s’han d’actualitzar les dades.

Advertència

Hi ha trenta-sis combinacions possibles en un tir de dos daus. D’aquestes combinacions, quinze són de MENYS, quinze de MÉS i sis resultats de SET.

Anomeneu l'arxiu font m4e10.cpp. 

11. L'ordinador endevina el nombre

Preneu com a base l'exercici 3 d'aquesta pàgin. El programa genera un nombre aleatori entre 1 i 1.000, i en aquest cas és l'ordinador el que acaba trobant el nombre. L’aplicació en tot moment mostra l'esdevenir de la partida.

A l'exemple de l'exercici 3 el resultat hauria estat:

El programa ha generat un nombre entre 0 i 1.000.

L'ordinador diu que és el... 456

El nombre es troba entre 456 i 1.000.

L'ordinador diu que és el... 700

El nombre es troba entre 456 i 700.

L'ordinador diu que és el... 500

El nombre es troba entre 500 i 700.

L'ordinador diu que és el... 625.

El nombre es troba entre 500 i 625.

L'ordinador diu que és el... 615

El nombre es troba entre 615 i 625.

L'ordinador diu que és el... 619

CORRECTE. Has endevinat el nombre al 6è intent.

Anomeneu l'arxiu font m4e11.cpp.