Logo Hardware.com.br
Kernel BeoS
Kernel BeoS Membro Junior Registrado
89 Mensagens 0 Curtidas

Quem entende isso...C++

#1 Por Kernel BeoS 22/02/2003 - 03:00
Olhem só q loucura! Tenho uma classe com uma função para adicionar um número numa lista-ligada

Lista::Adicionar(node **cabeca, node **atual,int i)
então dentro de main() o usuário digita o número CIN>>I; chamo a função
Link.Adicionar(&cabeca,&atual,i); o número é adicionado normalmente mas na hora de exibir a função Mostrar(&cabeca,&atual),
parece q vai além do último nó e dá erro...mas se eu colocar o usuário para digitar o número dentro de Adicionar() o programa fica normal.

Entenderam?? quer dizer, a função Mostrar() não tem nada a ver com CIN>>I, mas o programa só funciona se este estiver dentro de Adicionar(), eu não posso passar o I para Adicionar(...I);

Não compreendo isso 8O :? :cry:
Kernel BeoS
Kernel BeoS Membro Junior Registrado
89 Mensagens 0 Curtidas
#3 Por Kernel BeoS
22/02/2003 - 18:53
Esse código cause erre de execução=>
#include
#include
struct node{
int fone;
node *next;
};

class Lista{
public:
void Adicionar(node **cabeca,node **atual,int i);
int MostrarLista(node **cabeca,node **atual) ;
void Remover();
};

void Lista::Adicionar(node **cabeca,node **atual, int i)
{

if(*cabeca==NULL)
{
*cabeca=new node;
(*cabeca)->fone=i;
(*cabeca)->next=NULL;
}

else
{
*atual=*cabeca;
*cabeca=NULL;
*cabeca=new node;
(*cabeca)->fone=i;
(*cabeca)->next=(*atual);
}
}

int Lista::MostrarLista(node **cabeca,node **atual)
{

if(*cabeca==NULL)
{
cout << "There isn't any number" << endl;
return 0;
}
else
{
*atual=*cabeca;

while(*atual!=NULL)
{
cout <<"Fone: " << (*atual)->fone << endl;
*atual=(*atual)->next;
}
cout<<" deletando... ";
}
}


int main()
{
node *cabeca,*atual=NULL;
char name[64];
int i;

Lista Lista1;
cout<<"Oi !"< cin>>i;
Lista1.Adicionar(&cabeca,&atual,i);

cout<
Lista1.MostrarLista(&cabeca,&atual);

cout<<"deletado...";
node *ptr;
while(cabeca!=NULL)
{
ptr=cabeca->next;
delete cabeca;
cabeca=ptr;
}

return 0;
}
romulo
romulo General de Pijama Registrado
7.4K Mensagens 0 Curtidas
#6 Por romulo
23/02/2003 - 11:12
Kernel BeoS
ISSAAA :lol:
é pq aprendi q int x,y=10; faz as duas serem 10, então isso não funciona com estruturas?


Isso não funciona com nenhum tipo de variáveis. Quem te ensinou assim ensinou errado. Pelo menos segundo o padrão ANSI (às vezes um compilador específico pode ter alterações).

Kernel BeoS
outra coisa, mesmo com o código errado se o usuário digitar o nº dentro da funão Adicionar() o erro não ocorre


Cara, eu testei aqui no Dev-C++ e o erro continuou acontecendo, mesmo com o cin dentro da função.
Minha coleção de jogos (todos originais)
© 1999-2024 Hardware.com.br. Todos os direitos reservados.
Imagem do Modal