Paloma 0 Denunciar post Postado Abril 9, 2006 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
skimo-solar 0 Denunciar post Postado Abril 10, 2006 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
Paloma 0 Denunciar post Postado Abril 10, 2006 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
Paloma 0 Denunciar post Postado Abril 11, 2006 Poxa será que ninguém pode me dar uma ajuda :blink: http://forum.imasters.com.br/public/style_emoticons/default/upset.gif :mellow: :unsure: :wacko: :o http://forum.imasters.com.br/public/style_emoticons/default/excl.gif Compartilhar este post Link para o post Compartilhar em outros sites