Os testes para as listas de exercícios serão feitos via arquivos.
Seguem abaixo as especificações deles.

 
 

==========
Questão 01
==========
Arquivo fonte: quest1.c
Arquivo de entrada: quest1.in
Arquivo de saída: quest1.out







       O arquivo de entrada consiste de vários conjuntos de dados. Cada conjunto de dados contém duas linhas: a primeira linha contém o número de elementos a serem inseridos e a segunda linha contém os elementos que serão inseridos, na ordem em que aparecem, na árvore AVL. O conjunto de dados que iniciar com 0 (zero) como número de elementos indica fim de execução e esse conjunto não deve ser processado.
 

Entrada exemplo:
3
2 3 1
5
1 2 3 4 5
10
2 1001 5 13 14 15 9 10 102 103
20
20 19 18 17 16 15 14 13 12 11 10 9 8 7 6 5 4 3 2 1
1
10000
0

Saída exemplo correspondente à entrada acima:
Conjunto #1
      3
2
      1
 

Conjunto #2
            5
      4
            3
2
      1
 

Conjunto #3
            1001
                  103
      102
            15
14
                  13
            10
                  9
      5
            2
 

Conjunto #4
                  20
            19
                  18
      17
                  16
            15
                  14
13
                        12
                  11
                        10
            9
                        8
                  7
                        6
      5
                  4
            3
                  2
                        1
 

Conjunto #5
10000
 

Obs.:


Exemplo (referência) de código fonte para impressão:

// Um exemplo simples de uma árvore binária
struct arvore
{
      int valor;
      struct arvore * dir;
      struct arvore * esq;
}

...

void imprimir(struct arvore * no, int l)
{
      int i;

      // Imprime a sub-árvore a direita
      imprimir(no->dir,l+1);

      // Imprime o espa&ccetil;amento do elemento - reparem que são 6 (seis) espaços
      for(i=0;i<l;++i)
            fprintf(fpout,"      ");

      fprintf(fpout,"%d\n",no->valor);

      // Imprime a sub-árvore a esquerda
      imprimir(no->esq,l+1);
}



 
 

==========
Questão 02
==========
Arquivo fonte: quest2.c
Arquivo de entrada: quest2.in
Arquivo de saída: quest2.out







       A primeira linha do arquivo de entrada irá conter o número natural K de instâncias que serão usadas no teste. As linhas subseqüentes conterão K blocos de instâncias de Mergesort. Cada instância contém uma linha com a quantidade N (2 <= N <= 1024) de números a serem ordenados, seguida de N números naturais (a partir da linha seguinte à que contém N). Só serão ordenados números maiores que 0 (zero) e menores que 30.000.
 

Entrada exemplo:
5
10
3 5 2 6 7 20 19 22 100 1
7
6 7 20 19 22 100 1
15
3 5 2 6 7 20 19 22 100 1 101 102 202 303 404
2
2 1
4
4 3 2 1

Saída exemplo correspondente à entrada acima:
1 2 3 5 6 7 19 20 22 100
1 6 7 19 20 22 100
1 2 3 5 6 7 19 20 22 100 101 102 202 303 404
1 2
1 2 3 4

Obs.:



 
 

==========
Questão 03
==========







       A resposta deste exercício deve ser entregue em papel impresso junto com o disquete que contém as questões (1) e (2).
       Para cada um dos itens, dê uma justificativa baseada na definição formal dada em sala.
       Seja objetivo (vá direto ao ponto, sem divagações) e rigoroso na sua justificativa.