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

 

1. Còpia encriptada

A partir dels programes de la pràctica 4 i de la pràctica 3 del mòdul 6 feu un programa que permeti encriptar i desencriptar arxius amb el mètode de Juli Cèsar. El programa ha de ser molt semblant al de la pràctica 4, és a dir, s'ha de passar a la funció main dos arguments que corresponen al nom de l'arxiu que es vol encriptar i al nom de l'arxiu encriptat. Abans de fer l'encriptació, el programa ha de demanar el codi. Aquest codi serà un número entre 0 i 25. Per tal de desencriptar un arxiu només s'ha de tornar a cridar al mateix programa amb un codi igual a 26-codi anterior.

Anomeneu l'arxiu font: m8e1.cpp.

 

 

2. Emmagatzematge de vectors en disc

Feu una aplicació on es declari un vector de tipus double de 100 elements:

double element[100];

L'aplicació ens ha de permetre introduir aquests números per teclat fins a un màxim de 100. La introducció d'un -1 ha de servir per finalitzar la introducció de dades. El número -1  no s'ha de guardar. Una vegada introduïts tots aquests números, s'han de guardar en disc en una sola operació amb la funció fwrite(). El nombre de l'arxiu on es guardaran tots aquests números també s'introduirà per teclat abans d'introduir qualsevol dada.

Feu també la versió que permet recuperar les dades del disc i imprimir-les a la pantalla.

Anomeneu l'arxiu font: m8e2.cpp.

 

 

3. Dividir un arxiu en trossos de 1.450.000 octets

L'aplicació de la pràctica 6 només ens permet solucionar el problema a mitges. Feu una aplicació que faci les parts que siguin necessàries per tal que cadascuna de les parts càpiga en un disc de 3 1/4 polzades. Per exemple, si l'arxiu original té una mida de 5.356.320 d'octets, s'han de fer 4 parts, tres de 1.450.000 i una de 1.006.320 octets. Feu que el nom de l'arxiu original s'introdueixi com un argument de la funció main(). El noms de les parts serà arxiu1.dat, arxiu2.dat,....

Anomeneu l'arxiu font: m8e3.cpp.

 

 

4. Guardar i recuperar registres de la base de dades de pel·lícules

Feu un programa que permeti guardar i recuperar en disc les dades de la base de dades del exercici 1 del mòdul anterior. Seguiu el mateix procés de la pràctica 8. Recordarem que els registres són de l'estructura definida a continuació:

struct {
    char titol[50];
    char director[50];
    char protagonista[50];
    int duracio;
} ;

Podeu optar per fer dos programes o un de sol amb un menú que permeti triar l'opció guardar en disc o recuperar del disc. 

A l'opció guardar s'ha de comprovar si el camp titol introduït per teclat és la cadena buida. En cas afirmatiu, finalitza l'entrada de dades. A l'opció recuperar ha permetre treure totes les dades de tots els registres a la pantalla.

Anomeneu l'arxiu font: m8e4.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. Miniagenda telefònica

Podeu perfeccionar la miniagenda telefònica de la pràctica 1 del mòdul 7 per tal de permetre que els registres es guardin en un arxiu. Podeu triar el nivell de perfeccionament que volgueu fent servir alguna o totes de les següent indicacions:

  • L'opció de nova_entrada ha d'obrir l'arxiu en mode d'afegir dades ("a+"). Aquest mode farà que es creï l'arxiu si no existeix prèviament.

  • En qualsevol moment es pot calcular el nombre de registres emmagatzemats en disc amb la mida de l'arxiu dividit entre la mida de l'estructura.

  • L'opció d'esborrar_entrada ha de permetre triar un número d'entrada. Com que les entrades són correlatives serà fàcil trobar la posició correcta del registre que volem eliminar. L'esborrat total s'aconsegueix copiant l'arxiu en un altre arxiu deixant de copiar els octets corresponents al registre que volem copiar. Després es borra l'arxiu original i es canvia el nom del segon arxiu.

Normalment, en les bases de dades reals, no s'esborren definitivament els registres, només es marquen com a esborrats i totes les funcions de cerca i presentació de registres ignora als que estan marcats. Només una segona confirmació elimina definitivament els registres de la base de dades.

  • Incorporar també opcions de cerca, de moment cerca seqüencial, encara que es pot crear opcions d'ordenar els registres per un camp determinat i que hi hagi l'opció de cerques binàries per aquest camp. 

Tot això representa moltes millores possibles a la miniagenda telefònica. Feu les que pugueu. Incorporar totes aquestes millores podria representar un dels projectes de final de curs.

Anomeneu l'arxiu font: m8e5.cpp.