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

 
1. Funció recursiva de la potència entera d'un número

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

double pot(double base, int exponent)

Aquesta funció ha de calcular de forma recursiva el número 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.c.

 

2. Curiositat matemàtica

       12                               1

      112                            121

     1112                         12321

    11112                      1234321

   111112                   123454321

  1111112                12345654321

 11111112             1234567654321

111111112           123456787654321

Prenen com a base l'anterior exercici feu un exercici que mostri una sortida com la captura de pantalla que teniu a continuació:

El programa haurà de contenir una funció recursiva que calculi  1 elevat 2,

11 elevat 2, 111 elevat 2, 1111 elevat 2, ...  Feu la piràmide només per 8 fileres.

Anomeneu l'arxiu font: m4e2.c 

 

3. Endevina el número

El programa generarà un numero aleatori entre 1 i 1000 i l’usuari mira d’endevinar-lo. L’aplicació en tot moment recolzarà a l’usuari, a partir del número que creu que és,  mostrant entre quins números es troba la dada a endevinar.

El programa ha generat un número entre 0 i 1000

Quin creus que és ?. 456

El número es troba entre 456 i 1000

Quin creus que és ?. 700

El número es troba entre 456 i 700

Quin creus que és ?. 500

El número es troba entre 500 i 700

Quin creus que és ?. 625

El número es troba entre 500 i 625

Quin creus que és ?. 615

El número es troba entre 615 i 625

Quin creus que és ?. 619

CORRECTE. Has endevinat el número en el 6 intent.

Anomeneu l'arxiu font: m4e3.c 

 

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.c 

 

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 forma 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 feu que surti per pantalla les freqüències absolutes i relatives dels esdeveniments: suma 9 i suma 10.

Anomeneu l'arxiu font: m4e5.c 

 

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.

 

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 en 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.c 

 

7. Nombres combinatoris (II)

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

utilitzem 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 números combinatoris com:

Anomeneu l'arxiu font: m4e7.c 

 
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.c

9.Càlcul de nombres combinatoris

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

sabent que es calcula fent servir la fórmula:

Aquest número 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.c 

 

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 a 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 apostat a tots aquells que van apostar a MENYS i es quedarà amb les apostes d’aquells que van jugar a MÉS o SET.

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

Si surt un 7, el casino pagarà 3 a 1 (o 4 a 1) allò apostat, a tots aquells que van jugar a 7 i se’n aportarà totes les apostes d’aquells que varen jugar a MÉS o MENYS.

Desenvolupament del joc

Els jugadors aposten a MÉS, MENYS o SET. El programa llençarà els dos daus i donarà la suma. A continuació pagarà o no les apostes dels diferents jugadors.

En tot moment en el monitor es mostrarà les següents dades:

. Saldo actual de cada jugador.

. Aposta de la jugada.

 Desprès de la jugada s’hauran 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.c 

11. L'ordinador endevina el número

Pren com a base l'exercici 3 d' aquesta plana.  El programa generarà un numero aleatori entre 1 i 1000 i en aquest cas és l'ordinador qui acabarà trobant el número. L’aplicació en tot moment mostrarà l'esdevenir de la partida.

En l'exemple de l'exercici 3 el resultat hauría estat:

El programa ha generat un número entre 0 i 1000

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

El número es troba entre 456 i 1000

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

El número es troba entre 456 i 700

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

El número es troba entre 500 i 700

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

El número es troba entre 500 i 625

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

El número es troba entre 615 i 625

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

CORRECTE. Has endevinat el número en el 6 intent.

Anomeneu l'arxiu font: m4e11.c 

12. L’arrel digital d’un número

L'arrel digital d'un número é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 número natural. Podeu fer, tant una versió iterativa com una recursiva.

Anomeneu l'arxiu font: m4e12.c