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

 

1. Anagramas

 

Es diu que una paraula és amagrama d’una altra si contenen les mateixes lletres i el mateix nombre de vegades cadascuna, encara que estiguin en ordre diferent.

 

Exemple de mots que son anagramas:

           

            espinas            sapiens

            armari             rimarà

            dona                onda, nadó,

            curs                 rusc

 

En la següent pàgina web www.dilc.org1 i dins l’opció Utilitats, hi  trobareu un cercador de mots que son anagramas.  

 

Escriviu un programa C/C++ que contingui una funció anomenada int anagramas( char, char) que recollirà dues paraules, de 20 caràcters com a màxim, i retorni 1 si son anagramas i 0 en cas contrari.

Anomeneu l'arxiu font: m6e1.c.

 

1 Diccionari Invers de la Llengua Catalana.

 

 

2. Inserir cadena de caràcters

Escriu una funció anomenada  void InsertarCad ( char *cadena1, char *cadena2, int pos)  que permeti inserir una cadena ( cadena2 ) dins una altra cadena ( 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 en 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.c.

 

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 té en compte els espais. 

Exemples de palindroms:

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

 

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

 

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 a aquests caràcters com 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.c.

6. Velocitat d'escriptura

Feu un programa que calculi en 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 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 tenim 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.c.

7. Paraula més utilitzada

Escriu un programa que donat un text introduït pel teclat, ens 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:

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

 

8. Codi Morse

El codi Morse va ser desenvolupat per Samuel Morse en 1832 pel 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 que no es transmet cap so.

 

Consideracions a tenir en compte en el nostre programa:

-          Un espai en blanc separarà caràcters.

-         Tres espais en blanc consecutius separaran paraules.

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

 

  

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

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() ens impedeix fer-la servir per invertir frases senceres (cadenes amb espais). Feu les modificacions que considereu oportunes per tal de permetre tal eventuat.

Anomeneu l'arxiu font: m6e9.c.

10. Cost d'un telegrama

El cost d’un telegrama és una quantitat fitxa ( 0.10 euros ) multiplicada pel número 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 contarem 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.

 Escriu un programa que permeti demanar un telegrama i calculi el seu cost.

Anomeneu l'arxiu font: m6e10.c.