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

 

1. 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: m6e1.cpp.

 

 

2. 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: 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 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.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 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.cpp.