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.

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.

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

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

Entregue um único arquivo tp3.tgz que contenha por sua vez os seguintes arquivos:

  • racionais.h: o mesmo arquivo fornecido, não o modifique
  • racionais.c: sua implementação das funções definidas em racionais.h
  • tp3.c: contém a função main que usa os racionais
  • makefile
  • c/numeros_racionais_-_malloc.txt
  • Última modificação: 2023/09/20 11:35
  • por maziero