Pesquiza e Ordenação 0.0.1
Projeto estuda pesquisa: sequencial e binária; ordenação: selectsort e quicksort.
Estruturas de Dados | Macros | Enumerações | Funções

Referência ao ficheiro sortui.h

Protótipos e esqueletos de dados para o módulo sortui.c. Mais...

#include "mycommdef.h"

Ir para o código fonte deste ficheiro.

Estruturas de Dados

struct  SORT_REPORT
 Esqueleto dos dados do relatório de ordenação. Mais...
struct  SEARCH_REPORT
 Esqueleto dos dados do relatório de pesquisa. Mais...

Macros

#define DEFAULT_COLS   80
#define DEFAULT_LINES   25
#define SIZE_OF_ARRAY   513
#define MIN_ELEMENT   0
#define MAX_ELEMENT   1000
#define MAX_AVERAGE   1000

Enumerações

enum  eOptMenu {
  oGenerateArray = 1, oSearch, oSort, oSS1000,
  oPrintUnsorted = 51, oPrintSorted, oExit = 6, oUnknown,
  oNone
}
 

Opções do menu.

Mais...

Funções

void PrintMenu (void)
void Greeting (void)
int read_input (char *, int)
enum eOptMenu ParseOption (const char *, enum eOptMenu)
bool MoreInput (void)
void GenerateRndArray (int[], int)
void PrintArray (int[], int)
int get_element (void)
void ReportSearch (int, bool, bool, const struct SEARCH_REPORT *)
void ReportSort (const struct SORT_REPORT *, const struct SORT_REPORT *)
void ReportAverage (const struct SEARCH_REPORT *, const struct SORT_REPORT *, const struct SORT_REPORT *)
void get_AverageAndStdDeviation (struct SEARCH_REPORT *s_rpt, struct SORT_REPORT *ss_rpt, struct SORT_REPORT *qks_rpt, int nsize)

Descrição detalhada

Protótipos e esqueletos de dados para o módulo sortui.c.

Data:
02-05-2012 16:36:45
Versão:
0.0.1
Autor:
Alessandro Elias, ae11@inf.ufpr.br
Ruanito Diego Santos, rds@inf.ufpr.br

Documentação das macros

#define DEFAULT_COLS   80

Define número padrão de colunas. Em caso de erro este será o tamanho adotado.

#define DEFAULT_LINES   25

Define número de linhas padrão. Em caso de erro este será o tamanho adotado.

#define MAX_AVERAGE   1000

Número de casos no qual serão calculados médias e devio padrão.

#define MAX_ELEMENT   1000

Elemento máximo gerado aleatóriamente.

#define MIN_ELEMENT   0

Elemento mínimo gerado aleatóriamente.

#define SIZE_OF_ARRAY   513

Define tamanho do vetor. Posição 0 utilizada para busca com sentinela. Somente 512 posições são utilizadas.


Documentação dos valores da enumeração

enum eOptMenu

Opções do menu.

Valores da enumeração:
oGenerateArray 

Gera vetor aleatóriamente.

oSearch 

Executa pesquisa (sequencial e binária).

oSort 

Ordena com os algoritmos select e quicksort.

oSS1000 

Faz pequiza e ordenação em 1000 casos, cálcula média e devio padrão e gera relatório.

oPrintUnsorted 

Imprime na saída padrão o vetor desordenado.

oPrintSorted 

Imprime na saída padrão o vetor ordenado.

oExit 

Sai do programa.

oUnknown 

Opção inválida.

oNone 

Não faça nada


Documentação das funções

void GenerateRndArray ( int  arr[],
int  size 
)

Gera vetor com nsize elementos aleatório. O elemento máximo foi defino pela macro MAX_ELEMENT.

Parâmetros:
[out]arr[]- vetor onde será armazenado os valores aleatórios.
[in]size- tamanho de arr[].
Observações:
Observe que 0 foi reservado para busca com sentinela, então ignoramos esta posição do vetor.
Veja também:
MAX_ELEMENT
void get_AverageAndStdDeviation ( struct SEARCH_REPORT s_rpt,
struct SORT_REPORT ss_rpt,
struct SORT_REPORT qks_rpt,
int  nsize 
)

Calula Média e desvio padrão das comparações dos algoritmos busca sequencial, busca binária, ordenação select sort, quick sort.

Parâmetros:
[out]s_rpt- ponteiro para a estrutura pesquisa, com os dados a ser gerado um relatório.
[out]ss_rpt- ponteiro para a estrutura select sort, com os dados a ser gerado um relatório.
[out]qks_rpt- ponteiro para a estrutura quick sort, com os dados a ser gerado um relatório.
[in]nsize- número de casos a serem analizados.
Observações:
O cálculo da variância requer a média das comparações, então não podemos acumular o quadrado da diferença de x iésimo elemento to vetor com MA (média aritimética), pois não temos a média, porém podemos acumular o número de comparções de cada algoritmo para efeito do cálculo da média. Então é necessário armazenar o número de comparações e depois subtrair da média e elevar ao quadrado para o cálculo da variância. Consequentemente temos o desvio padrão.
Veja também:
GenerateRndArray, busca_seq, selectsort, binary_search, quick_sort
int get_element ( void  )

Obtem um elemento. Este elemento é obtido de duas maneiras: 1. aleatóriamente (entre 0 e MAX_ELEMENT) entrando uma string vazia. 2. através da entrada padrão. Neste caso o usuário pode entrar no máximo 9999, qualquer entrada adicional será ignorado.

Veja também:
LogMessage, read_input
void Greeting ( void  )

Imprime título do programa.

bool MoreInput ( void  )

função verifica se há mais dados a serem lidos da entrada padrão.

Retorna:
True há mais dados a serem lidos da entrada padrão, False caos contrário.
Observações:
Esta decisão de implementação fez-se necessária, uma vez que decidimos que o usuário é livre para dar entrada ao programa sem filtrar o que o usuário entrou. O comportamento de read() em caso a entrada do usuário é maior que o buffer passado a ela, é de: na subsequente chamada a ela, irá retornar o restante da entrada do usuário, até que possa ser lido toda entrada do usuário, uma vez todo o buffer foi consumido, subsequente chamada irá entrar em modo de espera até que seja dada uma outra entrada, em outras palavras, quando tem mais dados no buffer do stdin, as chamadas ao read() retornara imediatamente, até que não reste mais nada no stdin.
enum eOptMenu ParseOption ( const char *  pOpt,
enum eOptMenu  opt 
)

Processa opções do usuário.

Parâmetros:
[in]pOpt- ponteiro para string com a entrada do usuário.
[in]opt- opção do usuário na forma enum optMenu.
Retorna:
Uma opção do menu passado como comando.
oNone (não faça nada) em caso nenhum comando foi encontrado.
Observações:
pOpt tera uma string truncada em caso usuario inseriu uma entrada maior que o buffer.
Aviso:
A opção de entrar o comando em qualquer parte da execução do programa foi removido.
Veja também:
GenerateRndArray, get_element, busca_seq, selectsort, binary_search, ReportSearch, WaitReturn, quick_sort, ReportSort, get_AverageAndStdDeviation, ReportAverage, PrintArray
void PrintArray ( int  arr[],
int  size 
)

Imprime na tela em forma de uma matriz, numerando linhas e colunas, facilitando a identificação de um elemento no vetor.

Parâmetros:
[in]arr[]- vetor com os elementos a serem impressos no terminal.
[in]size- número de elementos do vetor arr[].
Veja também:
LogMessage
void PrintMenu ( void  )

Imprime opções do menu.

int read_input ( char *  pbuff,
int  size 
)

Le dados da entrada padrão.

Parâmetros:
[out]pbuff- ponteiro que receberá o buffer com dados entrado pelo usuário.
[in]size- número de caracteres que deve ser lido da entrada padrão, incluindo null.
Retorna:
Número de caracteres lidos da entrada padrão, exceto null.
void ReportAverage ( const struct SEARCH_REPORT s_rpt,
const struct SORT_REPORT ss_rpt,
const struct SORT_REPORT qks_rpt 
)

Impreme relatório das médias e desvio padrão, na saída padrão.

Parâmetros:
[in]s_rpt- ponteiro para os dados da pesquisa sequencial e binária a serem relatadas.
[in]ss_rpt- ponteiro para os dados da ordenação selectsort.
[in]qks_rpt- ponteiro para os dados da ordenação quicksort.
Veja também:
LogMessage
void ReportSearch ( int  element,
bool  f_seq,
bool  f_bin,
const struct SEARCH_REPORT sr 
)

Impreme relatório da pesquisa na saída padrão.

Parâmetros:
[in]element- elemento que foi pesquisado.
[in]f_seq- True se o elemento foi encontrado pela busca sequencial, False caso contrário.
[in]f_bin- True se o elemento foi encontrado pela busca binária, False caso contrário.
[in]sr- ponteiro para a estrutura com os dados da pesquisa sequencial e binária.
Veja também:
LogMessage
void ReportSort ( const struct SORT_REPORT sel_rpt,
const struct SORT_REPORT qk_rpt 
)

Impreme relatório de ordenação na saída padrão.

Parâmetros:
[in]sel_rpt- ponteiro para a estrutura com os dados da pesquisa do algoritmo selectsort.
[in]qk_rpt- ponteiro para a estrutura com os dados da pesquisa do algoritmo quicksort.
Veja também:
LogMessage
 Tudo Estruturas de dados Ficheiros Funções Variáveis Definições de tipos Enumerações Valores da enumeração Macros