Giter Site home page Giter Site logo

dcc012-lab-sorting's Introduction

Ordenação de Dados em C++

🤓 Resumo

Objetivo dessa atividade é implementar os principais algoritmos de ordenação baseados em comparações 🚀

Espera-se que ao final desta atividade você seja capaz de classificar informaçoes usando diferentes métodos de ordenação e compreender os principais conceitos e analisar o desempenho deles ao serem empregados em uma base de dados reais.

Atividade :

Nesta atividades, desejamos aprimorar o nosso sistema SIGA. Além de manipular o cadastro de informações de estudantes em um arquivo binário, iremos agora classificar as informações baseados em uma determinada chave de comparação.

Etapas:

  1. Copiar as rotinas do siga.cc que foram desenvolvidas na atividada prática anterior para o arquivo siga.cc atual.
  2. Alterar a rotina de leitura de dados do arquivo CSV. Observe que novas colunas foram inseridas no arquivo estundantes.csv. Alterações em outras partes do código serão necessárias para evitar BUGs. Indetifique-as e faça as correções necessárias.
  3. Implementar as rotinas de ordenação no arquivo sort.h. Seguir as indicações nas marcações TODO.
  4. Verificar se as rotinas passam nos testes definidos na pasta tests. Observem como os testes foram feitos e implementados. Há alguma falha neles?
  5. Implementar o programa de análise de desempenho desempenho.cc. Seguir as indicações nas marcações TODO.
  6. Implementar o programa de classificação dos estudantes por nome e turma. Novamente, vocês devem seguir as marcações TODO no arquivo. A classificação deve gerar uma arquivo csv chamando classificado.csv na pasta dados.

Organização do Projeto

O projeto está organizado na seguinte estrutura de arquivos:

src

  • estudante.h e estudante.cc : Implementa a entidade estudante
  • siga.h e siga.cc: Implementa um sistema simplista de gerenciamento de estudante.
  • sort.h: Implementa as rotinas de ordenação usando templates c++.
  • tools.h e tools.cc: implementa rotinas auxiliares para a verificação dos casos de testes e na medição de desempenho.

test

  • test1.cc: Testa se a entrada da base de dados está correta.
  • test2.cc: Testa a ordenação do algoritmo ordenação BasicSort está correta.
  • test3.cc: Testa a ordenação do algoritmo ordenação MergeSort está correta.
  • test4.cc: Testa a ordenação do algoritmo ordenação QuickSort está correta.
  • test5.cc: Testa a ordenação do algoritmo ordenação HeapSort está correta.
  • test6.cc: Testa a ordenação do algoritmo ordenação MySort está correta.

app

  • performance.cc: Gera um relatório de performance entre os métodos.
  • classifica.cc: Gera um arquivo texto em formato csv classificando os alunos por turma e nome em ordem ascendente.

IMPORTANTE

  • Detalhes do que deve ser feito encontram-se no arquivos fontes sob a tag TODO.
  • Os arquivos da pasta tests não devem ser modificados.
  • Os arquivos serão lidos ou criados na pasta tests/data
  • Fiquem a vontade para alterar ou adicionar outras ferramentas nos arquivos tools.h e tools.cc

Compilação e Execução:

Para a compilação em ambiente Unix/linux, use o comando:

  • Crie um diretório build
  mkdir build
  • Entre no diretório
  cd build
  • Chame o cmake
  cmake ../.
  • Compile os testes:
  make 
  • Rode os testes:
  ctest
  • Para rodar o estudo de desempenho:
 ./app/performance

  • Para rodar a classificação:
 ./app/classifica
 

Importante: Entre uma chamadas do ctest, remova o arquivo estudantes.bin da pasta tests/data.

📝 Entrega

Além do código, um relatório com a análise da atividade deverá ser entregue. Para tanto, basta editar o arquivo REPORT.md e submeté-lo junto com o código-fonte. O relatório faz parte dos critérios avaliativos desta atividade. A não submissão dele, ocasionará em penalidades na nota final.

📝 Importante

  • Não será permita o envio de código-fonte vai upload de arquivos no github!! Todos os envios devem ser via commits e push ao repositório.
  • Trabalhos iguais -> nota 0!! Logo não copie do colega!!!

dcc012-lab-sorting's People

Contributors

josecamata avatar jjcamata avatar

Recommend Projects

  • React photo React

    A declarative, efficient, and flexible JavaScript library for building user interfaces.

  • Vue.js photo Vue.js

    🖖 Vue.js is a progressive, incrementally-adoptable JavaScript framework for building UI on the web.

  • Typescript photo Typescript

    TypeScript is a superset of JavaScript that compiles to clean JavaScript output.

  • TensorFlow photo TensorFlow

    An Open Source Machine Learning Framework for Everyone

  • Django photo Django

    The Web framework for perfectionists with deadlines.

  • D3 photo D3

    Bring data to life with SVG, Canvas and HTML. 📊📈🎉

Recommend Topics

  • javascript

    JavaScript (JS) is a lightweight interpreted programming language with first-class functions.

  • web

    Some thing interesting about web. New door for the world.

  • server

    A server is a program made to process requests and deliver data to clients.

  • Machine learning

    Machine learning is a way of modeling and interpreting data that allows a piece of software to respond intelligently.

  • Game

    Some thing interesting about game, make everyone happy.

Recommend Org

  • Facebook photo Facebook

    We are working to build community through open source technology. NB: members must have two-factor auth.

  • Microsoft photo Microsoft

    Open source projects and samples from Microsoft.

  • Google photo Google

    Google ❤️ Open Source for everyone.

  • D3 photo D3

    Data-Driven Documents codes.