Ir para conteúdo

POWERED BY:

Arquivado

Este tópico foi arquivado e está fechado para novas respostas.

Diego Moco

Arquivos

Recommended Posts

eu tenho um arquivo de texto, contendo isso que está entre aspas:

"

RETANGULO

10 5

TRIANGULO

2 3

CIRCULO

7

POLIGONO

nnx

1 5

4 3

6 8

2 7

"

 

E preciso fazer um acesso via palavra chave, tipo assim, no retangulo "10" e "5" são numeros que representam base e altura respectivamente... aí eu preciso calcular a area caso for triangulo....ou seja eu tenho que calcular a area da figura.

Comecei a fazer mais ou menos aqui vai a tentativa de programa.

 

CODE
FILE* fp

char palavra [121];

 

while (fscanf (fp, “%120s”, palavra) == 1) {

if (strcmp(palavra, “RETANGULO”) == 0 {

/* interpreta retangulo */

else if (strcmp(palavra, “TRIANGULO”) == 0 {

/* interpreta triangulo */

else if (strcmp(palavra, “CIRCULO”) == 0 {

/* interpreta circulo */

else if (strcmp(palavra, “POLIGONO”) == 0 {

/* interpreta poligono */

}

else {

/* trata erro de formato */

} } }

Compartilhar este post


Link para o post
Compartilhar em outros sites

ql sua duvida no momento?

Bom eu não sei como calcular as areas...

tipo assim a fórmula do triangulo é b*h certo? mas como eu armazeno o número que está no arquivo em uma variável?

tem que armazenar neh?

e depois que eu acho a palavra chave como eu sei quando parar?

 

sei lá queria mais uma visão geral mesmo, pq esse código que está aí eu não entendi muito bem.

Não quero nada pronto não, só meio que um algoritmo, uma esplanação do que fazer no geral.

Compartilhar este post


Link para o post
Compartilhar em outros sites

olha com o fscanf você pode pegar esses numeros como inteiros jah, ou pegar como char e transformar em inteiro com a função atoi(); (alfha to integer)

e jah q esse ' " ' esta no final soh você fazer uma condição de parada na leitura assim:

FILE *p;
	if ((p = fopen("seu_txt.txt,"r")) == NULL)
	{
	printf("Erro! Impossivel abrir o arquivo!\n");
		exit(1);
	}
	while (!feof(p)) {
  //
//
bom tomare q eu tenha te ajudado pq naum entendi se era realmente essa sua duvida!

+ continue postando http://forum.imasters.com.br/public/style_emoticons/default/thumbsup.gif

Compartilhar este post


Link para o post
Compartilhar em outros sites

olha com o fscanf você pode pegar esses numeros como inteiros jah, ou pegar como char e transformar em inteiro com a função atoi(); (alfha to integer)

e jah q esse ' " ' esta no final soh você fazer uma condição de parada na leitura assim:

FILE *p;
	if ((p = fopen("seu_txt.txt,"r")) == NULL)
	{
	printf("Erro! Impossivel abrir o arquivo!\n");
		exit(1);
	}
	while (!feof(p)) {
  //
//
bom tomare q eu tenha te ajudado pq naum entendi se era realmente essa sua duvida!

+ continue postando http://forum.imasters.com.br/public/style_emoticons/default/thumbsup.gif

 

Ta ajudando hehehe

 

Então mas aí a condição de parada é o fim neh? e eu vou ter que calcular o retangulo e parar antes do triangulo por exemplo neh? como eu faço essas "separações" tipo calculo as duas do trianglo depois separadamente calculo as 2 do retangulo e tals?

 

E tipo o fscanf le os números, mas como eu uso os números que ele leu? ele lê e armazena em alguma variável?

 

O que eu quero fazer é Ler o retangulo e calcular o retangulo, ler o triangulo e calcular o triangulo assim por diante..

Compartilhar este post


Link para o post
Compartilhar em outros sites

entaum você le linha por linha e com o sscanf e armazena em uma variavel esse valor!

bom peguei um exemplo simples:

FILE*arq;
	 arq=fopen("arq.txt","r");
	 fgets(linha,80,arq);
	 sscanf(linha,"%d",&d);
	 printf("%d\n",d);
ai você sabe q tem q ler digamos 2 linhas pra pegar dois valores, ai você le as linhas, faz os calculos e ai retoma a leitura de onde parou!

enquanto ele naum encontrar o final do arquivo ele vai lendo!

 

[]'s

Compartilhar este post


Link para o post
Compartilhar em outros sites

entaum você le linha por linha e com o sscanf e armazena em uma variavel esse valor!

bom peguei um exemplo simples:

FILE*arq;
	 arq=fopen("arq.txt","r");
	 fgets(linha,80,arq);
	 sscanf(linha,"%d",&d);
	 printf("%d\n",d);
ai você sabe q tem q ler digamos 2 linhas pra pegar dois valores, ai você le as linhas, faz os calculos e ai retoma a leitura de onde parou!

enquanto ele naum encontrar o final do arquivo ele vai lendo!

 

[]'s

 

Hum legal! agora sim

só mais uma coisa, e se eu não souber qts linhas são? pq tem os polignos que pode conter várias linhas e se eu quiser ler até a próxima palavra chave ao invés de 2 linha até o eof?

Compartilhar este post


Link para o post
Compartilhar em outros sites

bom ele vai lendo até achar EOF qnd achar ele para, ou seja pode ter qnts dados quiser no txt!

como você fez no inicio ele vai fazer as comparações se é triangulo, triangulo depois ele irá pegar os valores e calcular!

 

[]'s

Compartilhar este post


Link para o post
Compartilhar em outros sites

bom ele vai lendo até achar EOF qnd achar ele para, ou seja pode ter qnts dados quiser no txt!

como você fez no inicio ele vai fazer as comparações se é triangulo, triangulo depois ele irá pegar os valores e calcular!

 

[]'s

 

será que é pedir muito se eu pedir pra você fazer o programa só com pra mim? tipo só com quadrado ou só com retangulo, só pra mim ter uma ideia

 

se der obrigado

Compartilhar este post


Link para o post
Compartilhar em outros sites

Diego tente fazer ai cara! confie em você!

to fazendo um trabalhinho em Java q ta ocupando meu tempo!

+ tente e rode o programa, os erros q surgirem eu te ajudo!!

 

[]'s

Compartilhar este post


Link para o post
Compartilhar em outros sites

×

Informação importante

Ao usar o fórum, você concorda com nossos Termos e condições.