Logo Hardware.com.br
jigga
jigga Membro Senior Registrado
348 Mensagens 0 Curtidas

ajuda para entender código - lista encadeda

#1 Por jigga 29/05/2011 - 09:55
#include <stdio.h>
#include <stdlib.h>
//Definição da Estrutura PNO
struct no
{
int info;
struct no *prox;
};
typedef struct no *PNO;

//Definição da Função Inserir_final
void inserir_final(PNO *L,int valor)
{
PNO Aux,P;
Aux=malloc(sizeof(struct no));
Aux->info=valor;
Aux->prox=NULL;
P=*L;
while (P->prox!=NULL){
P=P->prox;}
P->prox=Aux;
}

//Programa Principal
int main()
{
PNO Lista=NULL,P;
float media;
int soma,n,valor,i;
soma=0;
printf("Entre com a quantidade de Numeros que deseja calcular a media\n&quot;
scanf("%d",&n);
for (i=1;i<=n;i++)
{
printf("Entre com o %d Numero\n",i);
scanf("%d",&valor);
inserir_final(&Lista,valor);
}
P=Lista;
while(P!=NULL)
{
soma=soma+(P->info);
P=P->prox;
}
media=(soma/n);
printf("A media e igual a %f\n ",media);
system("pause&quot;
return 0;
}//fecha o int main



Galera, estou fazendo esse exercicio e ele pede o primeiro número, mas não pede o segundo.Não dá erro na compilação, mas após eu digitar o primeiro número dá erro no programa.
Estou em dúvida se devo chamar a função inserir_final como o & comercial na frente da Variável Lista, já que a Lista já é um ponteiro do tipo PNO.
E na função inserir_final se devo colocar * no L ou não.
Podem me ajudar por favor?
preciso disso para amanhã.
Muito Grato desde já.
jigga
jigga Membro Senior Registrado
348 Mensagens 0 Curtidas
#2 Por jigga
29/05/2011 - 10:57
olá pessoal.
Acho que encontrei o Erro.

coloquei o & comercial na chamada da função, e na função em si coloquei o * na frente de onde aparece o L.
Além disso troquei a função inserir_final por inserir inicio...
Tá funcionando legal.Acho que é isso.
Porém não tenho certeza se estou fazendo da forma certa.
Se é isso mesmo que tem que ser feito, por isso não vou fechar o tópico por enquanto; vou esperar opiniões de vcs.
Segue o Código:


#include <stdio.h>
#include <stdlib.h>
//Definição da Estrutura PNO
struct no
{
int info;
struct no *prox;
};
typedef struct no *PNO;

//Definição da Função Inserir_final
void inserir_inicio(PNO *L,int valor)
{
PNO Aux;
Aux=malloc(sizeof(struct no));
Aux->info=valor;
Aux->prox=*L;
*L=Aux;
}

//Programa Principal
int main()
{
PNO Lista,P;
Lista=NULL;
float media;
int soma,n,valor,i;
soma=0;
printf("Entre com a quantidade de Numeros que deseja calcular a media\n&quot;
scanf("%d",&n);
for (i=1;i<=n;i++)
{
printf("Entre com o %d Numero\n",i);
scanf("%d",&valor);
inserir_inicio(&Lista,valor);
}
P=Lista;
while(P!=NULL)
{
soma=soma+(P->info);
P=P->prox;
}
media=(soma/n);
printf("A media e igual a %f\n ",media);
system("pause&quot;
return 0;
}//fecha o int main



Abraços
Sempre havera alguem melhor que voce.....mas tambem haverao muitos piores.Samsung 750B/P5ld2-se r.2.0/Celeron D/Sata 2 160 GB / 512 Mb DDR 2 / 7300 GS 512 MB/Dvd-rw Sony
© 1999-2024 Hardware.com.br. Todos os direitos reservados.
Imagem do Modal