- @Luc4smp - https://github.com/Luc4smp
- @MariaLuisaGabriel - https://github.com/MariaLuisaGabriel
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.
O programa conta com duas estruturas principais que utilizam de outras estruturas.
Os Números são organizados em um Lista Duplamente Encadeada com descritor de Início da Lista;
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);
O Histórico é uma Fila LIFO(Last In First Out) encadeada com descritor de Início da Fila
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;
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;
A calculadora em seu Menu Inicial dispõe de um total de 5 opções:
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:
Limpa a estrutura de Histórica que é utilizada durante toda a execução do programa.
Exibe o Histórico no buffer de saída da seguinte forma:
Limpa o terminal (sim, simples assim).
Encerra a aplicação (sim, outro nome autoexplicativo).
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.
- 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 seucmd
e usar as seguintes linhas de comando:gcc -o main main.c calculadora.c
e logo em seguidamain.exe
; *Para Linux você terá problemas para compilação e execução do problema devido ao uso dowindows.h
na aplicação;
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.