🚀 go-pugleaf

RetroBBS NetNews Server

Inspired by RockSolid Light RIP Retro Guy

Article View: be.comp.programming
Article #8685

Nog één maal uit de nood helpen.

#8685
From: Christof Laeremans
Date: Tue, 11 Jun 2002 15:07
310 lines
6072 bytes
Hallo,

"Hier is die C++ zaag weer" ;)

Hier volgt de code van een eenvoudig programma dat gebruikt maakt van een
lijst van objecten. (Copy Constructor zit er nog niet bij omdat het nog niet
al te duidelijk is)

Wie kan me zeggen wat er fout loopt. Want als ik volgende invoer geef

Het klantnummer: 1
De initialen: a
Het klantnummer: 2
De initialen: b
Het klantnummer: 3
De initialen: c
Het klantnummer: 4
De initialen: d
Het klantnummer: 5
De initialen: e

Dan krijg ik deze uitvoer op mijn scherm
Klanten uit de lijst halen
5e
5e
5e
5e
5e

Hij blijkt alleen maar het laaste element te poppen

Alvast bedankt voor degene die me wil/kan helpen.

Mvg,

Christof Laeremans

Code
#ifndef __PERSOON_H
#define __PERSOON_H

class Persoon
{
    private:
        
        int _nummer;
        char _initialen[3];
    
    public:
    
        Persoon();
        
        void setNummer(int nummer);
        void setInitialen(char* initialen);
        
        int getNummer();
        char* getInitialen();
};

#endif

#include <string.h>
#include "persoon.h"

Persoon::Persoon()
{
    _nummer = 0;
    strncpy(_initialen,"   ",3);
    
}

void Persoon::setNummer(int nummer)
{
    _nummer = nummer;
}

void Persoon::setInitialen(char* initialen)
{
    strncpy(_initialen,initialen,3);
}

int Persoon::getNummer()
{
    return _nummer;
}

char* Persoon::getInitialen()
{
    return _initialen;
}

#ifndef __ELEMENT_H
#define __ELEMENT_H
#include "persoon.h"

class Element
{
    private:
        Persoon* _data;
        Element* _next;
    
    public:
        
        //Constructor
        Element(Persoon* data);
        
        //Opvragen van data
        Persoon* getData();
        Element* getNext();
        
        //Toevoegen van data
        void setData(Persoon* data);
        void setNext(Element* next);
};

#endif

#include "element.h"
#include <iostream.h>

Element::Element(Persoon* data)
{
    _data = data;
    _next = NULL;
}

Persoon* Element::getData()
{
    return _data;
}

Element* Element::getNext()
{
    return _next;
}

void Element::setData(Persoon* data)
{
    _data = data;
}

void Element::setNext(Element* next)
{
    _next = next;
}

#ifndef __QUEU_H
#define __QUEU_H

#include "element.h"

class Queu
{
    private:
        Element* _start;
        Element* _end;
    
    public:
    
        //Constructor
        Queu();
        
        //Destructor
        ~Queu();
        
        //pop
        Persoon* pop();
        
        //push
        void push(Persoon* data);
        
        //controle op elementen
        bool nogElementen();
};

#endif

#include <iostream.h>
#include "queu.h"

Queu::Queu()
{
    _start = NULL;
    _end = NULL;
}

Persoon* Queu::pop()
{
    Persoon *klant;
    
    if(_start)
    {
        
        //Ophalen van de data
        klant = _start -> getData();
        Element* temp = _start;
        _start = _start -> getNext();
        delete temp;
    }
    else
    {
        _end = NULL;
    }
    
    return klant;
}

void Queu::push(Persoon* data)
{
    Element* el = new Element(data);
    
        
    if(_start)
    {
        Element* temp = _end;
        _end = el;
        temp -> setNext(_end);
    }
    else
    {
        
        _start = el;
        _end = el;
    }
}

bool Queu::nogElementen()
{
    if(_start)
    {
        return true;
    }
    else
    {
        return false;
    }
}

Queu::~Queu()
{
    Element* temp = NULL;
    
    while(_start)
    {
        temp = _start;
        _start = _start -> getNext();
        delete temp;
    }
}

#include <iostream.h>
#include <string.h>
#include "queu.h"
#include "persoon.h"

int main()
{
    Queu Klanten;
    Persoon Klant;
    Persoon *Klnt;
    
    Klnt = &Klant;
    
    int nummer;
    char initialen[3];
    int i = 0;
    
    
    while(i < 5)
    {
        Klnt = NULL;
        cout<<"Het klantnummer: ";
        cin>>nummer;
        cin.get();
        Klant.setNummer(nummer);
        cout<<"De initialen: ";
        cin.get(initialen,3);
        cin.get();
        Klant.setInitialen(initialen);
        
        //klant toevoegen aan de lijst
        Klanten.push(Klnt);
    
        
        i++;
    }
    
    cout<<"Klanten uit de lijst halen"<<endl;
    
    
    
    while(Klanten.nogElementen())
    {
    
        Klnt = Klanten.pop();
        cout<<Klant.getNummer();
        cout<<Klant.getInitialen();
        Klnt = NULL;
        
        cout<<endl;
        
    }
    
    cout<<"bestaat de lijst ja of neen !";
    while(Klanten.nogElementen())
    {
        cout<<"ja"<<endl;
    }
    
}            
Technical Details
Message-ID: <B92BDED1.684E%christof_laeremans@hotmail.com>
Path: arc1-ca.pugleaf.net!archiver1.google.com!news1.google.com!sn-xit-02!sn-xit-05!supernews.com!feed.textport.net!news-out.nuthinbutnews.com!propagator-sterling!news-in.nuthinbutnews.com!news-spur1.maxwell.syr.edu!news.maxwell.syr.edu!news.tele.dk!small.news.tele.dk!195.238.2.15!skynet.be!skynet.be!news.be.wanadoo.com!news.wanadoo.be!not-for-mail

Show Full Headers
Complete Article Headers
X-Google-Language: DUTCH,ASCII-7-bit
X-Google-Thread: fcea4,d75aeeec4e01f9d8,start
X-Google-Attributes: gidfcea4,public
X-Google-ArrivalTime: 2002-06-11 08:07:51 PST
Path: arc1-ca.pugleaf.net!archiver1.google.com!news1.google.com!sn-xit-02!sn-xit-05!supernews.com!feed.textport.net!news-out.nuthinbutnews.com!propagator-sterling!news-in.nuthinbutnews.com!news-spur1.maxwell.syr.edu!news.maxwell.syr.edu!news.tele.dk!small.news.tele.dk!195.238.2.15!skynet.be!skynet.be!news.be.wanadoo.com!news.wanadoo.be!not-for-mail
From: Christof Laeremans <christof_laeremans@hotmail.com>
Newsgroups: be.comp.programming
Subject: Nog één maal uit de nood helpen.
Date: Tue, 11 Jun 2002 17:07:29 +0200
Organization: Wanadoo Belgium
Lines: 313
Message-ID: <B92BDED1.684E%christof_laeremans@hotmail.com>
NNTP-Posting-Host: adsl-80-236-139-88.wanadoo.be
Mime-Version: 1.0
Content-Type: text/plain; charset="US-ASCII"
Content-Transfer-Encoding: 7bit
X-Trace: sinclair.be.wanadoo.com 1023808076 1261026 80.236.139.88 (11 Jun 2002 15:07:56 GMT)
X-Complaints-To: abuse@wanadoo.be
NNTP-Posting-Date: Tue, 11 Jun 2002 15:07:56 +0000 (UTC)
User-Agent: Microsoft-Entourage/10.0.0.1309