PRO2

L3: Piles i Cues

Els exercicis d'aquesta sessió es resolen amb el Jutge.

Té interès fer servir la documentació de la llibreria estàndar de C++ per a stack<T> i queue<T>, per veure quins mètodes tenen i com s'utilitzen:

Preliminars

1. Compilació amb _GLIBCXX_DEBUG

Si es fa un programa amb un error com aquest:

stack<int> S;
S.pop();

el programa no abortarà l'execució de cop, però, tal com passa sovint amb accessos a caselles no existents d'un vector, l'execució pot continuar i donar resultats extranys o imprevisibles.

Per evitar-ho es pot compilar el codi definint la variable _GLIBCXX_DEBUG. Per fer-ho s'utilitza la opció -D així:

g++ -D_GLIBCXX_DEBUG -o programa programa.cpp

El fet d'utilitzar aquesta opció farà que, en cas d'error, el programa s'aturi i es mostri un missatge d'error que ens ajudarà a identificar quin és el problema. La documentació sobre aquesta opció té més informació sobre la depuració de programes que fan servir les classes de la llibreria de C++.

2. Treballar amb fitxers .tar

Un fitxer .tar és simplement una concatenació de molts fitxers en un format que permet recuperar-los de nou individualment (i que per tant inclou la seva metainformació). De fet "tar" ve de "tape archiver", dels temps en què es guardaven còpies de les dades en cintes magnètiques!

Un .tar és un contenidor, i és útil perquè és un estàndar ben establert i té moltes eines per manipular-lo. En el Jutge, els problemes de PRO2 sovint demanen un .tar perquè cal fer enviaments que tenen més d'un fitxer.

Exemple

La següent comanda crea un fitxer .tar amb tots els fitxers d'un directori anomenat projecte:

tar -cvf projecte.tar projecte

Les opcions són:

  • -c: per a crear un nou fitxer .tar
  • -v: per a mostrar els fitxers que s'estan afegint
  • -f: per a indicar el nom del fitxer .tar que es vol crear (en aquest cas projecte.tar).

Si es fan servir moltes opcions alhora (-c, -v, i -f), es pot posar només un guió i totes elles seguides (-cvf). Com que la opció -f és la que té un paràmetre (projecte.tar en aquest cas), s'ha de posar la última.

El nom projecte al final de la comanda indica que volem afegir tots els fitxers del directori projecte al fitxer .tar.

Extracció dels fitxers dins d'un .tar

Per extreure els fitxers d'un fitxer .tar, cal anar a una carpeta on es vol recrear el contingut del fitxer .tar original i executar:

tar -xvf projecte.tar

Si el fitxer és el mateix creat abans, això ompliria la carpeta projecte amb els fitxers originals.

Exercicis

Piles:

Cues: