Mostra carpetes indentades Z19994


Statement
 

pdf   zip   tar

thehtml

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.hhla classe Tree
tree-io.hhl’entrada/sortida de Tree
main.ccel 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.)

Public test cases
  • 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
    
    
  • Information
    Author
    Pau Fernández
    Language
    Catalan
    Official solutions
    C++
    User solutions
    C++