====== Números racionais - ponteiros ====== {{ homer-computer.png?250|}}:!: Este projeto foi inicialmente proposto pelo prof. [[https://www.inf.ufpr.br/marcos/|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 [[ponteiros]] e funções com passagem de parâmetros por referência. ===== 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, as funções que manipulam racionais usam passagem de parâmetros por referência. Você deve baixar {{tp2.tgz|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). * ''tp2.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 {{tp2.pdf |enunciado}} foi produzido pelo prof. Castilho para este projeto. ==== Programa principal ==== O programa principal (''tp2.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 numeros racionais - os racionais devem ser inicializados com valores lidos do teclado imprima este vetor elimine deste vetor os elementos inválidos imprima o vetor resultante ordene este vetor imprima o vetor resultante calcule e imprima a soma de todos os elementos do vetor retorne 0 ==== Exemplo 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 ''tp2.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'' * ''tp2.c'': contém a função ''main'' que usa os racionais * ''makefile''