classroom-ufersa / classroom-ufersa/SelectionSortEmployee

Avaliação_AEDI_1

Open
#2 0 comments 0 reactions 0 assignees View on GitHub
Dominant language
C
Stars
0
Forks
2
PR merge metrics
No merged PRs in 30d

Description

1. No presente trabalho, o método de ordenação Selection sort está sendo utilizado para ordenar um array do tipo Estruturado Funcionário, ordenando em ordem alfabética os nomes dos funcionários. O método posiciona iterativamente o menor valor valor do conjunto em análise na primeira posição do vetor, em seguida o segundo maior valor é colocado na segunda posição, esse procedimento acontece iterativamente, de forma sequencial. Para realizar as comparações, no selection_sort é implementada 2 laços aninhados, um laço externo pra percorrer os indices do vetor e um laço interno que vai realizar as comparações entre as strings. A complexidade de tempo do algoritmo de ordenação é ditada pelo tamanho do vetor. Considerando o tempo constante, no pior e no melhor dos casos, o laço interior seria executado n(n-1), por um laço depender do outro, MAX = O(N^2).
2. O código possui uma TAD para um o tipo estruturado Funcionário. A struct Funcionario possui os seguintes campos: tag, nome, cargo e documento. As funções implementadas em funcionario.h são as seguintes:

- uma função que cadastra os um funcionario, preenchendo seus campos de forma dinamica
- uma função que libera a memoria alocada para um tipo estruturado Funcionario
- uma função que compara o tamanho de 2 strings
- uma função que ordena um array funcionarios por nome utlizando o selection sort
- uma função que lê os dados de um arquivo de texto e os grava em um array de funcionario
- uma função que imprime os funcionarios cadastrados
- uma função que busca um funcionario por documentoem um array do tipo funcionario
- uma função que importa os dados em um arquivo de texto existente e armazena em uma struct funcionario

O codigo possui um arquivo main.c que linka a interface de usuario ao TAD Funcionario. Para o usuario, o sistema oferece as seguintes funcionalidades:

- Cadastrar funcionario
- Listar funcionarios
- Importar funcionarios
- Teste de execução Selection Sort
- Buscar funcionario
- Encerrar

3.
- O sistema utiliza um array de Funcionarios alocado dinamicamente para armazenar os dados dos funcionarios em tempo de execução:
- linha 36 em main.c: Funcionario **funcionario = (Funcionario**) calloc(MAX_FUNC,sizeof(Funcionario*));

- O sistema utiliza um TAD para representar o tipo estruturado Funcionario (funcionario.h e funcionario.c)
- Também foi utilizado manipulação de arquivos para guardar e carregar os dados dos funcionarios:
--func_leia na em funcionario.c, linha 100;
--func_salva em funcionario.c, linha 141;
4. Os comentários nos protótipos das funções em funcionario.h dão uma boa noção do funcionamento de cada função. O readme do projeto explana bem o funcionamento do selection_sort , no entanto, faltou um tópico mostrando com os pré-requisitos para executar o sistema e um tutorial de compilação/instalação. Nota 3.
5. Sugestão de melhorias:

- remover a pasta com configurações do vscode (.vscode)
- Em funcionario.c, linha 28 e 29:
strcpy(funcionario->nome, strupr(nome));
strcpy(funcionario->cargo, strupr(cargo));
- Em funcionario.c, linha 48
return strcmp(strupr(nome1), strupr(nome2));

A função strupr() que está sendo usada para deixar uma string maiuscula, não funciona em sistemas de distribuição linux, o ideal seria escrever uma função que itera a string e retorna a mesma maiuscula.

exemplo de função:

/*converte string para maiusculo*/
void maiusculo(char *s1, char *s2){
int i = 0;
while(s1[i] != '\0'){
s2[i] = toupper(s1[i]);
i++;
}
s2[i] = '\0';
}

6.
https://github.com/felipehidequel/SelectionSortEmployee

Contributor guide

No contributing guide indexed for this repository

Assessment

This issue has not been assessed yet.

Get new issues in your inbox

A short digest of beginner-friendly GitHub issues.