Números racionais - alocação dinâmica
Este projeto foi inicialmente proposto pelo prof. Marcos Castilho para a disciplina de Programação 1 (CI1001).
Este trabalho visa modificar o módulo de números racionais desenvolvido anteriormente para usar alocação dinâmica de memória.
Atividade
Você deve implementar um programa que manipule números racionais, que são números da forma a/b, onde a e b são números inteiros. Nesta versão, os números racionais devem ser alocados dinamicamente.
Você deve baixar este arquivo e abri-lo para poder fazer o trabalho, pois irá precisar de todos os arquivos ali contidos:
racionais.h
: arquivo de cabeçalho com os protótipos das funções (não deve ser alterado).racionais.c
: arquivo que implementa as operações sobre números racionais (“esqueleto” a completar).tp3.c
: código que usa a biblioteca de racionais (“esqueleto” a completar).makefile
: arquivo do utilitário “make” para compilar seu código.
No arquivo racionais.h
foi definida uma estrutura (struct) para o tipo abstrato de dados racional e os protótipos das funções que permitem manipular essa estrutura. Você deve implementar essas funções no arquivo racionais.c
.
Este enunciado foi produzido pelo prof. Castilho para este projeto.
Programa principal
O programa principal (tp3.c
) contém a função main
. Ele deve incluir o header racionais.h
e implementar corretamente o seguinte pseudocódigo:
leia um n tal que 0 < n < 100 crie um vetor de n posicoes contendo ponteiros para numeros racionais - os racionais deverao ser inicializados com valores lidos do teclado - este vetor tambem deve ser alocado dinamicamente imprima os racionais apontados pelos elementos do vetor elimine deste vetor os racionais invalidos imprima o vetor resultante ordene este vetor imprima o vetor ordenado calcule e imprima a soma de todos os racionais apontados pelo vetor libere toda a memória alocada - todos os racionais - o vetor de ponteiros - o espaço utilizado para fazer o cálculo da soma ao final, mude de linha retorne 0
Exemplos de funcionamento
Considerando que o usuário digitou a seguinte entrada:
15 -1 3 5 0 2 7 1 9 9 0 8 -5 -7 0 0 8 6 11 7 -17 1 0 12 36 -5 20 4 9 5 0
A saída correspondente deve ser:
-1/3 INVALIDO 2/7 1/9 INVALIDO -8/5 INVALIDO 0 6/11 -7/17 INVALIDO 1/3 -1/4 4/9 INVALIDO -1/3 4/9 2/7 1/9 -1/4 -8/5 1/3 0 6/11 -7/17 -8/5 -7/17 -1/3 -1/4 0 1/9 2/7 1/3 4/9 6/11 SOMA = -206177/235620
Entregáveis
Entregue um único arquivo tp3.tgz
que contenha por sua vez os seguintes arquivos:
racionais.h
: o mesmo arquivo fornecido, não o modifiqueracionais.c
: sua implementação das funções definidas emracionais.h
tp3.c
: contém a funçãomain
que usa os racionaismakefile