Giter Club home page Giter Club logo

calculadora-de-numeros-grandes's Introduction

🤖 Calculadora de Números Grandes:

🧑‍💻Colaboradores:

Visão Geral:

Trabalho do segundo período do curso Bacharelado em Ciências da Computação da UFU(Universidade Federal de Uberlândia-MG) na disciplina de Algoritmos e Estruturas de Dados 1. O programa implementa uma calculadora de números inteiros de tamanho arbitrário, que é capaz de operar com números maiores do que o valor máximo suportado pelos tipos de dados int e long. Foi criada uma representação para tais números que explora os benefícios oferecidos pelas estruturas de dados vistas em sala de aula, mais detalhes serão dados nos próximos tópicos.

Organização das Estruturas Utilizadas:

O programa conta com duas estruturas principais que utilizam de outras estruturas.

Números:

Os Números são organizados em um Lista Duplamente Encadeada com descritor de Início da Lista;

Nós dos Números:

Cada Nó conta com os seguintes Campos:

  • Endereço do Próximo Nó;
  • Valor armazenado no Nó (Cada Nó armazena um dígito nesse campo);

Histórico:

O Histórico é uma Fila LIFO(Last In First Out) encadeada com descritor de Início da Fila

Nós do Histórico:

Cada Nó conta com os seguintes Campos:

  • Endereço do Próximo Nó;
  • Primeiro Número, Segundo Número e Terceiro Número (Seguindo a estrutura adotada para os Números);
  • Operação realizada entre os dois primeiros Números;

🤔Por que optamos por essas Estruturas?

Escolhemos usar uma Lista Duplamente Encadeada para os Números em razão dos seguintes fatores:

  • Facilidade em navegar sentido Início->Fim e sentido Fim->Inicio;
  • Estrutura de Dados mais genérica;
  • Fácil de trabalhar, é extremamente conveniente;

Escolhemos usar uma Fila para o Histórico em razão dos seguintes fatores:

  • Entendemos que caso fosse necessário retirar uma operação do Histórico para liberar memória o certo seria retirar a operação mais antiga;

Funcionalidades da Calculadora:

A calculadora em seu Menu Inicial dispõe de um total de 5 opções:

image


Opção 🇦 :

Ao escolher essa opção é pedido do usuário o input do primeiro Número, a operação que será feita com esse Número e o Segundo Número. Logo após a passagem desses dados a operação escolhida é realizada e o resultado mostrado na tela da seguinte forma:

image


Opção 🇧 :

Limpa a estrutura de Histórica que é utilizada durante toda a execução do programa.


Opção 🇨 :

Exibe o Histórico no buffer de saída da seguinte forma:

image


Opção 🇩 :

Limpa o terminal (sim, simples assim).


Opção 🇽 :

Encerra a aplicação (sim, outro nome autoexplicativo).


Outras Funcionalidades:

A aplicação guarda os erros no arquivo log.txt e salva todas as operações do Histórico no arquivo historico.txt, observe que se esses arquivo já não estiverem criados eles serão criados ao executar a aplicação.

🤔Após clonar o repositório, como eu uso a aplicação ?

  • Caso você use a IDE CodeBlocks é só abrir o arquivo do projeto e executar a opção build & run na IDE;
  • Caso contrário, você deve ter a ferramenta gcc instalada no seu cmd e usar as seguintes linhas de comando:
    • gcc -o main main.c calculadora.c e logo em seguida main.exe; *Para Linux você terá problemas para compilação e execução do problema devido ao uso do windows.h na aplicação;

Final Toughts:

Por hora, o projeto está dado como finalizado até que encontremos algo para melhorar ou corrigir, aceitamos feedbacks e acreditamos que foi um trabalho muito proveitoso e que nos ensinou muito.

calculadora-de-numeros-grandes's People

Contributors

marialuisagabriel avatar gventino avatar

Stargazers

Leonardo Salge avatar

Watchers

 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.