1. Este site usa cookies. Ao continuar a usar este site está a concordar com o nosso uso de cookies. Saber Mais.

ajuda em c++(urgente)

Discussão em 'Programação' iniciada por wallydosantos, 29 de Maio de 2007. (Respostas: 7; Visualizações: 884)

  1. wallydosantos

    wallydosantos Power Member

    boas...
    estou a fazer um trabalho em c++, estou a fazer uma função de inserir / remover elementos de uma lista. ela insere/remove so que nao guarda..
    gostava de saber como faço uma função pra guardar os elementos que insiro e removo..
    insiro elementos deste tipo:1;Ricardo Gomes Silva;Avenida dos Combatentes,1200 Lisboa;140567000...
    utilizo uma estrutura do tipo cliente:

    Código:
    typedef struct cliente{
    	long int num;
    	char nome[max];
    	char morada[max];
    	long int n_c;
    }cliente;
    
    e aqui estao as funções de remover e inserir :
    Código:
    void removenode(LIST * lista,void * ptr_data)
    {
    	LIST_NODE * node, * ant;
    	BOOLEAN find=FALSE;
    	node=*lista;
    	while(node!=NULL && find==FALSE)
    	{
    		if(DATA(node)==ptr_data)
    		{
    			if(node==*lista)
    			{
    				*lista=NEXT(node);
    				free(node);
    			}
    			else
    			{
    				NEXT(ant)=NEXT(node);
    				free(node);
    			}
    			find=TRUE;
    		}
    		else
    		{
    			ant=node;
    			node=NEXT(node);
    		}
    	}
    	return;
    }
    
     
    Última edição pelo moderador: 30 de Maio de 2007
  2. muddymind

    muddymind 1st Folding then Sex

    epa, edita o post e poe indentação nisso q assim não se le nada...

    []

    ps- tens mesmo umas ferramentas para indentar no editor de posts
     
  3. S.T.E.E.L.

    S.T.E.E.L. Power Member

    Mas queres gravar isso num ficheiro, suponho?

    Se sim, precisas das funções

    fopen(...)
    fwrite(...)
    fclose(...)
    fread(...)

    Já não me lembro é da síntaxe do fwrite() e fread(), mas no google tudo se encontra... :D
     
  4. Myth

    Myth Power Member

    Boas,

    Dizes que estás a fazer o trabalho em C++, mas o código está em C. Se queres fazer em C++, deves usar Classes e aproveitar os beneficios das librarias STD. Com a STD, não precisas de andar a fazer funções manhosas de manipulação de listas. ;)

    Para guardar em C usas tipo
    Código:
    FILE* fp = fopen("dados.txt","r+");
    fprintf(fp, "%d;%s;%s;%d\n",var1, var2, var3, var4 );
    fclose(fp);
    
    para c++ usas algo do gen:
    Código:
    ofstream dados("dados.txt", ios::out);
    dados << var1 << ";" << var1 << ";" << var1 << ";" << var1 << "\n";
     
  5. hYpe

    hYpe [email protected] Member

    void removenode(LIST * lista,void * ptr_data)

    LIST_NODE * node...

    node=*lista;

    Eu já implementei coisas do género, tambem em c++, parecido com o q estas a fazer... Mas lembro-me de fazer
    node = *lista.getCabeca();

    De salientar que o meu objecto lista, era de uma classe criada por mim.

    Cumps
     
  6. MX+

    MX+ Power Member

    Embora isto esteja programado em C, esta é a solução para o problema:

    PHP:
    void removenode(LIST ** listavoid ptr_data)
    {
        if ( *
    lista == NULL ) {
        }
        else
        if ( 
    DATA(*lista) = ptr_data ) {
            *
    lista NEXT(lista);
        }
        else {
            
    LIST_NODE *node = *lista;

            while( 
    NEXT(node) != NULL && DATA(NEXT(node)) != ptr_data )
                
    node NEXT(node);
                
            if ( 
    NEXT(node) != NULL ) {
                
    NEXT(node) = NEXT(NEXT(node));
            }
        }    
    }
    Só um pormenor. Tens de passar o endereço do apontador da lista, porque o que queres remover pode ser o primeiro item da lista e assim tens de alterar o endereço do apontador da lista.

    PHP:
    removenode( &lista, ... );
     
  7. Jeust

    Jeust Colaborador
    Staff Member

    como é k estás a implementar a lista?

    pk só com esta função só te guarda os dados de um cliente... tens de ter uma variavel k te faça a transição para o próximo elemento da lista, entre outras coisas...
     
  8. MX+

    MX+ Power Member

    Realmente esse pormenor escapou-me >_<
    É um bocado fundamental : D

    wallydosantos conta ai como te estás a safar.
     

Partilhar esta Página