rxc Postado Junho 23, 2004 Denunciar Share Postado Junho 23, 2004 Considere a existência de um arquivo, chamado “entrada.txt”, que contém uma seqüênciade descrições de objetos geométricos (círculos, retângulos e triângulos). Este arquivo deentrada é um arquivo texto com a descrição de um objeto por linha. Cada linha se inicia poruma 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 representamcomentário e devem ser desconsideradas na leitura dos dados. Para linhas que representamum triângulo ou um retângulo são especificadas a base e a altura (dois números reais). Nocaso da linha representar um círculo, apenas um número real, o raio, é especificado. Oquadro abaixo mostra um exemplo de um arquivo de entrada.# representacao de figuras geometricasR 10.0 20.0T 20.0 5.0C 4.0# R 10.0 10.0r 2.0 3.0R 1.0 0.5c 1.0t 1.0 1.0Formato do arquivoEste trabalho consiste em escrever um programa que leia as informações armazenadas noarquivo “entrada.txt”, e escrever um arquivo texto “saída.txt” com as descrições dosmesmos objetos geométricos agrupados por tipo e em ordem crescente de área. Assim, oarquivo de saída deve primeiro apresentar os círculos em ordem crescente de área, seguidosdos retângulos, também em ordem crescente de área, seguidos, por fim, dos triângulos emordem crescente de área. Para o cálculo da área do círculo, use o valor de igual a 3.14. Oformato do arquivo de saída é análogo ao formato utilizado no arquivo de entrada com asseguintes particularidades:•deve-se utilizar apenas caracteres maiúsculos (C, R ou T) para indicar otipo 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árioPor exemplo, se o arquivo “entrada.txt” for dado pelo apresentado acima, o arquivo“saida.txt” deve conter:C 1.00C 4.00R 1.00 0.50R 2.00 3.00R 10.00 20.00T 1.00 1.00T 20.00 5.00Trabalho de Estruturas de Dados – PUC-Rio 2/2As fórmulas para cálculo das áreas são:Retângulo: base b, altura h b*hTriângulo: base b, altura h (b*h)/2Círculo: raio r 3.14 * (r*r)Deve ser previsto o caso de um arquivo de entrada vazio ou inexistente. Se o arquivo forinexistente, 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 geradadeve ser um arquivo vazio. Considera-se ainda que nunca existirão mais do que 1000figuras 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 apróxima. Por exemplo, implemente primeiro uma função para ler e reproduzir na tela osdados lidos. A seguir, armazene os dados lidos numa estrutura de dados, faça a ordenaçãodestes dados e os imprima na tela. Finalmente, gere o arquivo de saída seguindo o formatoespecificado.Critério de avaliação:A correção do trabalho será feita comparando a saída gerada pelo programa com a saídaesperada. 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;} Citar Link para o comentário Compartilhar em outros sites More sharing options...
0 rxc Postado Junho 23, 2004 Autor Denunciar Share Postado Junho 23, 2004 ahh eskeci de falar além de ver se o código está de acordo com o que foi pedido uma coisa eu sei q não está ok ele pedi pra ignorar as linhas q tem # mas não sei como fazer isso ?? =/alguém se habilita? Citar Link para o comentário Compartilhar em outros sites More sharing options...
0 Guest Guest Postado Junho 28, 2004 Denunciar Share Postado Junho 28, 2004 #include <stdio.h>int main (void){char c;float b, h, r;float a;FILE* ent=fopen("entrada.txt", "r");FILE* sai=fopen("saida.txt", "r");if ((ent==NULL) || (sai==NULL)) {printf("problemas com os arquivos\n");return 0;}while (sscanf(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;} Citar Link para o comentário Compartilhar em outros sites More sharing options...
0 Guest Guest Postado Junho 28, 2004 Denunciar Share Postado Junho 28, 2004 O programa não guarda nada nos ficheiros Citar Link para o comentário Compartilhar em outros sites More sharing options...
0 pardal Postado Julho 2, 2004 Denunciar Share Postado Julho 2, 2004 ahahahesse foi o trabalho de estrtura ??? hahahah eu colei de um mlk e zerei tava muito sem saco de fazer .... heheh mas tuh cara de pau hein .... Citar Link para o comentário Compartilhar em outros sites More sharing options...
Pergunta
rxc
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;
}
Link para o comentário
Compartilhar em outros sites
4 respostass a esta questão
Posts Recomendados
Participe da discussão
Você pode postar agora e se registrar depois. Se você já tem uma conta, acesse agora para postar com sua conta.