Un ‘Tree<string>‘ ens permet representar una jerarquia de carpetes. Cada node és una carpeta, i les fulles són o bé fitxers, o carpetes buides. Per exemple, l’estructura de carpetes del codi públic d’aquest mateix problema és aquesta:
public |-- .vscode | |-- launch.json | '-- tasks.json |-- main.cc |-- Makefile |-- tree.hh '-- tree-io.hh
Implementa la funció amb la següent capçalera:
/** * @brief Mostra un arbre de carpetes i fitxers a la sortida en format * indentat * * Per exemple: * ``` * problema * codi_font * main.cc * Makefile * jocs_de_prova * publics * sample-1.inp * privats * * ``` * * Cal notar que la última línia és buida per poder veure la separació * amb altres arbres de carpetes * * @param t Un arbre que representa una jerarquia de carpetes i fitxers. * @param indent_size Número d'espais d'indentació per a cada nivell. * * @pre `indent_size` > 0. * @post S'ha mostrat per la sortida estàndard l'arbre `t` amb un nivell * d'indentació d'`indent_size` espais per a cada nivell de profunditat. */ void print_folders(Tree<string> t, int indent_size);
Observació
Els fitxers públics (icona del gatet) contenen:
tree.hh | la classe Tree |
tree-io.hh | l’entrada/sortida de Tree |
main.cc | el programa principal |
També hi ha un Makefile i el directori .vscode que té la configuració per compilar i depurar amb VSCode.
Cal implementar print_folders en un fitxer .cc nou, compilar, i finalment enviar només el fitxer amb la funció.
Entrada
Cada cas consisteix en un enter que és el nivell d’intendació desitjat, seguit d’una representació textual d’un arbre de carpetes. (Aquesta lectura ja la fa el programa principal.)
Sortida
Per a cada cas, la sortida és el resultat de cridar l’acció print_folders per a cada carpeta. (Això també ho fa el programa principal.)
Input
1
problem.yml
2
sample
|-- sample-2.cor
|-- public
| |-- sample-2.cor
| |-- tree-io.hh
| |-- sample-1.cor
| |-- program.cc
| '-- sample-1.cor
'-- vendor
|-- sample-1.inp
'-- tree-io.hh
3
private-1.inp
4
sample-2.cor
5
private
|-- P68688.zip
|-- program.cc
|-- .vscode
| |-- sample-2.inp
| |-- test
| | |-- tree.hh
| | |-- private-2.inp
| | |-- private-2.inp
| | '-- program.exe
| |-- sample-2.inp
| |-- test
| | |-- problem.yml
| | |-- P68688.pdf
| | '-- tree-io.hh
| '-- handler.yml
'-- test
|-- test
| |-- program.exe
| '-- main.cc
'-- .vscode
|-- sample-2.cor
'-- program.exe
Output
problem.yml
sample
sample-2.cor
public
sample-2.cor
tree-io.hh
sample-1.cor
program.cc
sample-1.cor
vendor
sample-1.inp
tree-io.hh
private-1.inp
sample-2.cor
private
P68688.zip
program.cc
.vscode
sample-2.inp
test
tree.hh
private-2.inp
private-2.inp
program.exe
sample-2.inp
test
problem.yml
P68688.pdf
tree-io.hh
handler.yml
test
test
program.exe
main.cc
.vscode
sample-2.cor
program.exe