Pesquiza e Ordenação 0.0.1
Projeto estuda pesquisa: sequencial e binária; ordenação: selectsort e quicksort.
|
Módulo da interface com usuário. Mais...
#include <stdio.h>
#include <stdlib.h>
#include <time.h>
#include <string.h>
#include <strings.h>
#include <poll.h>
#include <unistd.h>
#include <errno.h>
#include <term.h>
#include <curses.h>
#include <math.h>
#include "mydebug.h"
#include "sortui.h"
#include "log.h"
#include "buscaseq.h"
#include "buscabinaria.h"
#include "selectsort.h"
Macros | |
#define | TOTAL 48 |
#define | SIZE_TAB 8 |
#define | TOTAL 42 |
#define | MAX_ELEMENT_PER_LINE 16 |
#define | BUFF_SIZE 6 |
Funções | |
int | main (void) |
int | read_input (char *pbuff, int size) |
bool | MoreInput (void) |
void | EmptyStdIn (void) |
Consome dados da entrada padrão. Isto fará com que os dados a mais que o usuário entrou sejam ignorados. A leitura byte a byte faz-se necessária, pois o programa pode estar trabalhando com um arquivo de entrada, assim podemos identificar cada final de entrada com LF ' '. | |
void | Greeting (void) |
void | PrintMenu (void) |
enum eOptMenu | ParseOption (const char *pOpt, enum eOptMenu opt) |
void | get_AverageAndStdDeviation (struct SEARCH_REPORT *s_rpt, struct SORT_REPORT *ss_rpt, struct SORT_REPORT *qks_rpt, int nsize) |
void | WaitReturn (void) |
Imprime na tela espere e aguarda pela tecla enter. | |
void | GenerateRndArray (int arr[], int size) |
void | PrintArray (int arr[], int size) |
int | get_element (void) |
void | ReportSearch (int element, bool f_seq, bool f_bin, const struct SEARCH_REPORT *sr) |
void | ReportSort (const struct SORT_REPORT *sel_rpt, const struct SORT_REPORT *qk_rpt) |
void | ReportAverage (const struct SEARCH_REPORT *s_rpt, const struct SORT_REPORT *ss_rpt, const struct SORT_REPORT *qks_rpt) |
Variáveis | |
bool | g_bStdinConnectedTotty |
int | g_ncols = DEFAULT_COLS |
int | g_nlines = DEFAULT_LINES |
bool | g_bCleanSrc = TRUE |
Módulo da interface com usuário.
Este módulo possui todas as funcões que interagem com o usuário, o TUI (text user interface).
void EmptyStdIn | ( | void | ) |
Consome dados da entrada padrão. Isto fará com que os dados a mais que o usuário entrou sejam ignorados. A leitura byte a byte faz-se necessária, pois o programa pode estar trabalhando com um arquivo de entrada, assim podemos identificar cada final de entrada com LF '
'.
void GenerateRndArray | ( | int | arr[], |
int | size | ||
) |
Gera vetor com nsize elementos aleatório. O elemento máximo foi defino pela macro MAX_ELEMENT.
[out] | arr[] | - vetor onde será armazenado os valores aleatórios. |
[in] | size | - tamanho de arr[]. |
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.
[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. |
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.
void Greeting | ( | void | ) |
Imprime título do programa.
int main | ( | void | ) |
Ponto de inicialização do program.
bool MoreInput | ( | void | ) |
função verifica se há mais dados a serem lidos da entrada padrão.
Processa opções do usuário.
[in] | pOpt | - ponteiro para string com a entrada do usuário. |
[in] | opt | - opção do usuário na forma enum optMenu. |
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.
[in] | arr[] | - vetor com os elementos a serem impressos no terminal. |
[in] | size | - número de elementos do vetor arr[]. |
void PrintMenu | ( | void | ) |
Imprime opções do menu.
int read_input | ( | char * | pbuff, |
int | size | ||
) |
Le dados da entrada padrão.
[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. |
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.
[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. |
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.
[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. |
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.
[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. |
void WaitReturn | ( | void | ) |
Imprime na tela espere e aguarda pela tecla enter.
bool g_bCleanSrc = TRUE |
Não implementado. Daria opção ao usuário de pressionar 'q' e não limpar a tela, enter limparia o terminal.
Variável blobal, recebe valor da função isatty().
isatty() retorna 1 quando file descriptor esta conectado a um terminal, 0 caso contrário.
int g_ncols = DEFAULT_COLS |
Variável global, armazena número de colunas do terminal do usuário.
int g_nlines = DEFAULT_LINES |
Variável global, armazena número de linhas do terminal do usuário.