Ir para conteúdo

Arquivado

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

Paloma

Listas Encadeadas

Recommended Posts

Pessaol, tô tentando fazer esse exercício de listas encadeadas, mas tô enrolada na passagem de parâmetros alguém pode me dar uma ajuda? :rolleyes: :unsure: http://forum.imasters.com.br/public/style_emoticons/default/ermm.gif

 

#include <stdio.h>#include <stdlib.h>typedef struct figuras{  char cod;  int id;  float b;  float h;}fig;//VARIÁVEL GLOBALfig *lista;fig *lse_vazia(){  return NULL;}//FUNÇÃO LISTA VAZIAfig *lse_vazia(fig *lista){	return NULL;}	//FUNÇÃO INSERIR DADOSfig *entrada_dados(fig *lista){  figuras fig;    system ("cls");  printf ("Entre com o numero de identificacao: ");  fflush(stdin);  scanf ("%d", &fig.id);    printf ("Entre com o valor da base: ");  fflush (stdin);  scanf ("%f", &fig.b);    printf ("Entre com o valor da altura: ");  fflush (stdin);  scanf ("%f", &fig.h);  }//FUNÇÃO LER CÓDIGOfig *ler_codigo(fig *lista){	char cod;	float at,ar;		entrada_dados();		switch(cod)	{			   case 'T': Triangulo();			   at = (b*h)/2.0;			   break;			   			   case 'R': Retangulo();			   ar = b*h;			   break;			   			   default:"Opcao Invalida";	}}			  	//FUNÇÃO PRINCIPALint main (){	lista = lse_vazia();		entrada_dados();	ler_codigo();		system ("PAUSE");	return (0);}

Compartilhar este post


Link para o post
Compartilhar em outros sites

Vamos começar ajustando os erros básicos do código, depois você me passa novamente o que você gostaria de fazer.

 

//VARIÁVEL GLOBALfig *lista;fig *lse_vazia(){  return NULL;}//FUNÇÃO LISTA VAZIAfig *lse_vazia(fig *lista){	return NULL;}
Aqui você está declarando duas vezes lse_vazia, seria bom remover a segunda declaração.

 

//FUNÇÃO INSERIR DADOSfig *entrada_dados(fig *lista){  figuras fig;    system ("cls");
Nesta parte você está fazendo uma declaração errada.

O nome da estrutura que você criou é fig, e não figuras. Então a inicialização deveria ficar assim:

fig figuras;
Onde fig é o tipo de estrutura que você vai declarar e figuras é o nome da estrutura.

 

Você deve se lembrar de alterar aqui o fig para figuras, já que o nome é este.

scanf ("%d", &fig.id);
Não só neste scanf como em todos os outros.

 

switch(cod)	{			   case 'T': Triangulo();			   at = (b*h)/2.0;			   break;			   			   case 'R': Retangulo();			   ar = b*h;			   break;			   			   default:"Opcao Invalida";	}
Temos vários problemas aqui.

Você diz que caso cod = 'T' chame a função Triangulo(), mas não existe tal função.

Idem quando chama a função Retangulo()

 

Outra coisa é neste cálculo:

at = (b*h)/2.0;
Não existe nenhum b e nenhum h dentro desta função, ou seja, você precisa declará-los e atribuir valores a cada um.

Idem no outro case;

 

default:"Opcao Invalida";
Isto irá fazer o que com esta string? Imprimi-la que não vai, nem retorná-la. Então dê um rumo a ela ;)

 

entrada_dados();ler_codigo();
Na declaração destas funções você afirmou que elas teriam parâmetros, e aqui você não está passando nenhum.

 

Tente fazer estas correções e depois poste novamente o código e o que precisa.

Seu problema deve ser fazer alterações dentro da estrutura através das funções, além de passá-las de uma para outra. Corrija estes erros básicos e depois vamos para a parte mais interessante ;)

Compartilhar este post


Link para o post
Compartilhar em outros sites

Realmente declarei duas vezes a mesma função (vazia) falta de atenção, coisa de principiante http://forum.imasters.com.br/public/style_emoticons/default/blush.gif

 

Pensei que fosse o contrário figuras fig valeu http://forum.imasters.com.br/public/style_emoticons/default/joia.gif

 

Aí é que eu me enrolei toda, então eu crio duas funções para o calculo da área do triang. e retang. e chamo no switch :wacko:

 

Quanto as variáveis b e h eu ñ declarei na função pq tentei acessar as que declarei na struct como faço isso, prefiro ñ declarar tantas variáveis, pq pra mim complica mais ^_^

 

Quanto aos parâmetros das funções, esse é meu maior problema pq ñ estou sabendo quais são e os ponteiros é que complicam mais ainda http://forum.imasters.com.br/public/style_emoticons/default/yay.gif

 

Como exemplo essa função:

//FUNÇÃO INSERIR DADOSfig *entrada_dados(fig *lista){   fig figuras;  system ("cls");  printf ("Entre com o numero de identificacao: ");  fflush(stdin);  scanf ("%d", &figuras.id);  printf ("Entre com o valor da base: ");  fflush (stdin);  scanf ("%f", &figuras.b);  printf ("Entre com o valor da altura: ");  fflush (stdin);  scanf ("%f", &figuras.h);}

Dá uma mensagem de erro como se tivessem poucos argumentos, mas sinceramente ñ vejo onde falta!!

 

1 - Passei como parâmetro a lista;

2 - Declarei a variável do tipo da struct para pode acessar os dados, o que mais pode faltar?

 

O código agora está dessa forma:

 

#include <stdio.h>#include <stdlib.h>typedef struct figuras{  char cod;  int id;  float b;  float h;}fig;//VARIÁVEL GLOBALfig *lista;//FUNÇÃO LISTA VAZIAfig *lse_vazia(fig *lista){	return NULL;}//FUNÇÃO INSERIR DADOSfig *entrada_dados(fig *lista){   fig figuras;  system ("cls");  printf ("Entre com o numero de identificacao: ");  fflush(stdin);  scanf ("%d", &figuras.id);  printf ("Entre com o valor da base: ");  fflush (stdin);  scanf ("%f", &figuras.b);  printf ("Entre com o valor da altura: ");  fflush (stdin);  scanf ("%f", &figuras.h);}//FUNÇÃO LER CÓDIGOfig *ler_codigo(fig *lista){	char cod;	float at,ar;	entrada_dados();	switch(cod)	{			   case 'T': Triangulo();			   at = (b*h)/2.0;			   break;			   case 'R': Retangulo();			   ar = b*h;			   break;			   default:printf("Opcao Invalida");	}}//FUNÇÃO PRINCIPALint main (){	lista = lse_vazia();	entrada_dados();	ler_codigo();	system ("PAUSE");	return (0);}
Agradeço a ajuda e aguardo se possível uma resposta;

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.