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

 

1. Cost d'un telegrama

El cost d’un telegrama és una quantitat fitxa (0,10 euros) multiplicada pel nombre de paraules que conté, tenint en consideració el següent:

-         Si la paraula conté més de 10 lletres i menys de 20, compta com dues paraules.

-         Si la paraula té 20 lletres o més,  i menys de 30, la contareu com si en fossin 3.

-        Compten com a 4 si les lletres que conté son 30 o més.

-         Hi pot haver més d’un espai en blanc entre elles.

-         El telegrama acaba amb el caràcter punt.

 Escriviu un programa que permeti demanar un telegrama i en calculi el cost.

Anomeneu l'arxiu font m6e1.cpp.

 

 

2. Inserir una cadena de caràcters

Escriviu una funció anomenada void InsertarCad ( char *cadena1, char *cadena2, int pos)  que permeti inserir una cadena (cadena2) dins d'una altra (cadena1) a partir d’una posició determinada.

 Consideracions:

 -  Si pos és més gran que la longitud de cadena1, llavors cadena2 s’afegirà al final de cadena1.

 -  Si a cadena1 no hi cap el resultat final, cadena1 es truncarà.

 

 Exemples per char cadena1[50] i char cadena2[50] :

 - Si cadena1 val “Crèdit fonaments de programació”

   InsertarCad(cadena1, “c4 ”,8); dóna com a resultat:

                    “Crèdit c4 fonaments de programació”

  - Si cadena1 val “Crèdit C4”

  InsertarCad(cadena1, ”Fonaments de programacio”,8); dóna com a resultat:

                   “Crèdit C4 fonaments de programació”

 - Si cadena1 val “Crèdit fonaments de programació”

   InsertarCad(cadena1, “c4 ”,8); dóna com a resultat:

                 “Crèdit c4 fonaments de programació”

 

Anomeneu l'arxiu font m6e2.cpp.

 

3. Els palíndroms

Escriviu un programa per reconèixer palíndroms. Un palíndrom és una frase que es llegeix igual de dreta a esquerra que d'esquerra a dreta. No es tenen en compte els espais. 

Exemples de palíndroms:

  • A Cornellà, Tània i Aina tallen roca.
  • Un avi salta l'atlas, i va nu.

El programa ha de contenir una funció amb el protocol:

int palind(char *text);

Si el text és un palíndrom, la funció tornarà el valor 1; en cas contrari, tornarà el valor 0.

A la pàgina http://www.fut.es/~mgine/palidi.htm#catala podeu trobar molts exemples de palíndroms en molts idiomes.

Anomeneu l'arxiu font m6e3.cpp.

 

4. Substitució

Escriviu un programa que implementi la funció substituir, el protocol de la qual sigui:

char *substituir (char *text, char *old, char*new)

Aquesta funció ha de buscar en text totes les aparicions de la cadena old i les ha de substituir per la cadena new. Teniu en compte que old i new seran cadenes que no necessàriament tindran la mateixa mida. No fa falta fer comprovació de límits. Se suposa que la cadena text podrà emmagatzemar el resultat final.

Per exemple:

text="Tots els llibres de l'escriptori són llibres meus"
old="llibres"
new="llapis"
substituir(text, old, new)="Tots els llapis de l'escriptori són llapis meus"

Anomeneu l'arxiu font m6e4.cpp.

 

Problemes complementaris

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

 

5. Freqüència de lletres 

A la pràctica 9 s'ha fet un recompte de les lletres d'un text introduït per teclat. Si heu provat el programa, us haureu adonat que els caràcters especials ç, ñ, à, í... no els compta. La funció isalpha() no considera aquests caràcters com a lletres. Reemplaceu aquesta funció per una altra que torni un 1 en el cas que l'argument sigui un caràcter a-z, A-Z, ç, Ç, ñ, Ñ, á, Á, é, É, í, Í, ó, Ó, ú, Ú, à, À, è, Èò, Òï, Ïü, Ü.

Feu també que el programa comptabilitzi els caràcters {a, á, à, A, Á, À} junts, etc.

Anomeneu l'arxiu font m6e5.cpp.

6. Velocitat d'escriptura

Feu un programa que calculi el nombre de pulsacions per minut que es té escrivint amb el teclat.

El programa ha de demanar la introducció d'un text. El programa detectarà la primera pulsació i començarà a comptar el temps des de llavors. Per acabar el text, l'usuari/ària haurà de prémer Ctrl + z. Llavors, el programa haurà d'indicar-nos:

  • El nombre total de pulsacions

  • El temps en segons empleat

  • La velocitat expressada en pulsacions per minut

Per poder comptar el temps, teniu la funció time(), la declaració de la qual es troba a l'arxiu de capçalera time.h. Aquesta funció torna el temps en segons.

Si la primera vegada que es prem una tecla s'assigna a una variable entera, per exemple temps, el valor de time(NULL).

temps=time(NULL);

Quan s'acabi d'entrar el text, el temps empleat és igual a: time(NULL)-temps. 

Anomeneu l'arxiu font m6e6.cpp.

7. Paraula més utilitzada

Escriviu un programa que, donat un text introduït pel teclat, digui quina és la paraula més utilitzada i el nombre de vegades que es repeteix.

Exemple:

"És a l’estiu que moltes poblacions celebren la Festa Major, sovint la més esperada de totes les festes de l'any. És la festa grossa, que s'allarga uns quants dies i que veu tothom al carrer participant en espectacles, jocs, actes culturals i lúdics, balls... Si hi pensem una mica, veurem que és molt natural que les festes majors es facin a l'estiu. Cal no oblidar que aquestes festes s'originen al món rural, on fins ben entrat el segle XIX la majoria de la població feia de pagès. I a pagès l'estiu és una època de l'any en què la feina deixa respirar una mica.//"

                 La paraula més repetida és: la, i es repeteix 6 vegades.

 

Es considerarà que:

-          Hi ha almenys una paraula.

-          L’espai en blanc és el caràcter separador de paraules.

-          Hi pot haver més d’un espai en blanc entre paraules.

-          Els caràcters // indicaran el final del text.

Anomeneu l'arxiu font m6e7.cpp.

 

8. Codi Morse

El codi Morse va ser desenvolupat per Samuel Morse el 1832 per al sistema telegràfic. Aquest codi assigna a cada lletra de l'abecedari i als dígits (del 0 al 9) una sèrie de punts i ratlles.

 

En els sistemes audibles, el punt representa un so curt i la ratlla un so llarg. L’espai s’indica mitjançant un període curt en el qual no es transmet cap so.

 

Consideracions que s'han de tenir en compte en el aquest programa:

-          Un espai en blanc separarà caràcters.

-         Tres espais en blanc consecutius separaran paraules.

-          El caràcter / indicarà final del text.

 

  

Escriviu un programa que contingui una funció per codificar en codi Morse un text llegit pel teclat i una altra per passar de Morse als corresponents caràcters alfabètics.

 Lletres de l'abecedari i el seu corresponen codi Morse internacional:

Caràcter

Codi

Caràcter

Codi

A

.-

T

-

B

-...

U

..-

C

-.-.

V

...-

D

-..

W

.--

E

.

X

-..-

F

..-.

Y

-.--

G

--.

Z

--..

H

....

 

 

I

..

Dígits

 

J

.---

1

.----

K

-.-

2

..---

L

.-..

3

...--

M

--

4

....-

N

-.

5

.....

O

---

6

-....

P

.--.

7

--...

Q

--.-

8

---..

R

.-.

9

----.

S

...

0

-----

 

Anomeneu l'arxiu font m6e8.cpp.

9. Inversió d'una frase

A la pràctica 1 s'ha implementat una funció que permet invertir una paraula. El fet de fer servir la funció scanf(), impedeix fer-la servir per invertir frases senceres (cadenes amb espais). Feu les modificacions que considereu oportunes per permetre tal eventuat.

Anomeneu l'arxiu font m6e9.cpp.