Considere a existência de um arquivo, chamado “entrada.txt”, que contém uma seqüência de descrições de objetos geométricos (círculos, retângulos e triângulos). Este arquivo de entrada é um arquivo texto com a descrição de um objeto por linha. Cada linha se inicia por uma letra ‘C’, ‘c’, ‘R’, ‘r’, ‘T’ ou ‘t’ indicando um círculo, um retângulo ou um triângulo. As linhas que têm o caractere # como primeiro caractere não branco representam comentário e devem ser desconsideradas na leitura dos dados. Para linhas que representam um triângulo ou um retângulo são especificadas a base e a altura (dois números reais). No caso da linha representar um círculo, apenas um número real, o raio, é especificado. O quadro abaixo mostra um exemplo de um arquivo de entrada. # representacao de figuras geometricas R 10.0 20.0 T 20.0 5.0 C 4.0 # R 10.0 10.0 r 2.0 3.0 R 1.0 0.5 c 1.0 t 1.0 1.0 Formato do arquivo Este trabalho consiste em escrever um programa que leia as informações armazenadas no arquivo “entrada.txt”, e escrever um arquivo texto “saída.txt” com as descrições dos mesmos objetos geométricos agrupados por tipo e em ordem crescente de área. Assim, o arquivo de saída deve primeiro apresentar os círculos em ordem crescente de área, seguidos dos retângulos, também em ordem crescente de área, seguidos, por fim, dos triângulos em ordem crescente de área. Para o cálculo da área do círculo, use o valor de igual a 3.14. O formato do arquivo de saída é análogo ao formato utilizado no arquivo de entrada com as seguintes particularidades: •deve-se utilizar apenas caracteres maiúsculos (C, R ou T) para indicar o tipo de objeto •deve-se apresentar os números reais com precisão de duas casas decimais •não se deve gerar nenhuma linha de comentário Por exemplo, se o arquivo “entrada.txt” for dado pelo apresentado acima, o arquivo “saida.txt” deve conter: C 1.00 C 4.00 R 1.00 0.50 R 2.00 3.00 R 10.00 20.00 T 1.00 1.00 T 20.00 5.00 Trabalho de Estruturas de Dados – PUC-Rio 2/2 As fórmulas para cálculo das áreas são: Retângulo: base b, altura h b*h Triângulo: base b, altura h (b*h)/2 Círculo: raio r 3.14 * (r*r) Deve ser previsto o caso de um arquivo de entrada vazio ou inexistente. Se o arquivo for inexistente, não se deve gerar nenhum arquivo de saída. Se o arquivo de entrada for vazio, isto é, sem nenhum dado ou composto apenas por linhas de comentários, a saída gerada deve ser um arquivo vazio. Considera-se ainda que nunca existirão mais do que 1000 figuras geométricas ao todo descritas em um arquivo de entrada. Sugestão: Implemente as funções pedidas aos poucos, testando cada uma delas antes de passar para a próxima. Por exemplo, implemente primeiro uma função para ler e reproduzir na tela os dados lidos. A seguir, armazene os dados lidos numa estrutura de dados, faça a ordenação destes dados e os imprima na tela. Finalmente, gere o arquivo de saída seguindo o formato especificado. Critério de avaliação: A correção do trabalho será feita comparando a saída gerada pelo programa com a saída esperada. Portanto, o arquivo de saída deve obedecer exatamente o formato exemplificado acima. E o meu código é esse aqui q está compilando ok, mas séra q ele está de acordo com o que está sendo pedido? eu não sei como testa-lo também #include <stdio.h> int main (void) { char c; float b, h, r; float a; FILE* ent=fopen("entrada.txt", "rt"); FILE* sai=fopen("saida.txt", "rt"); if ((ent==NULL) || (sai==NULL)) { printf("problemas com os arquivos\n"); return 0; } while (fscanf(ent," %c %f %f %f",&c,&b,&h,&r) == 4) { if (c == 'R') a = (b*h); if (c == 'T') a = (b*h)/2; if (c == 'C') a = 3.14*(r*r); } fclose(ent); fclose(sai); return 0; }