Article View: be.comp.programming
Article #8692Re: Nog ��n maal uit de nood helpen.
From: Johan Vervloet
Date: Tue, 11 Jun 2002 15:48
Date: Tue, 11 Jun 2002 15:48
349 lines
7874 bytes
7874 bytes
<disclaimer>
Ik moet eigenlijk dringend vertrekken, dus ik heb je code maar vluchtig
kunnen lezen, en onderstaande uitleg zal heel verwarrend en mogelijk
foutief zijn. ;)
</disclaimer>
maarr...
In je Element klasse zit een pointer naar data. Ik vermoed dat voor
alle elementen die je maakt, element._data naar de variabele Klant
wijst in je
`main' functie. Elke keer als je een nieuwe klant inleest, overschrijf
je de data in deze Klant variabele. Dat wil zeggen dat op het einde de
variabele Klant het nummer 5 en de initialen `e' heeft. Alle pointers
wijzen naar deze Klant, dus elke keer als je een pointer van de stack
haalt, zal de inhoud daarvan de inhoud van de variabele `Klant zijn'
Groeten,
Johan
p.s. : Nu ik het zaakje herbekijk, waarom staat daar Klnt = NULL in je
loop ? Als die daar inderdaad staat, dan houdt mijn vorige uitleg weinig
steek.
On Tue, 11 Jun 2002 17:07:29 +0200
Christof Laeremans <christof_laeremans@hotmail.com> wrote:
> 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;
> }
>
> }
>
>
>
--
Steun de actie tegen MS Word attachments !
http://www.gewestpallieter.be/~jvvloet/word
Technical Details
Message-ID:
<20020611174838.68f4e5f5.johan@gewestpallieter.be>Path:
arc1-ca.pugleaf.net!archiver1.google.com!news1.google.com!sn-xit-02!sn-xit-05!supernews.com!feed.textport.net!diablo.netcom.net.uk!netcom.net.uk!newsfeed.icl.net!kibo.news.demon.net!demon!newsfeed.belnet.be!naxos.belnet.be!news.belnet.be!news.uia.ac.beReferences:
<B92BDED1.684E%christof_laeremans@hotmail.com>Show Full Headers
Complete Article Headers
X-Google-Language: DUTCH,ASCII-7-bit X-Google-Thread: fcea4,d75aeeec4e01f9d8 X-Google-Attributes: gidfcea4,public X-Google-ArrivalTime: 2002-06-11 08:48:42 PST Path: arc1-ca.pugleaf.net!archiver1.google.com!news1.google.com!sn-xit-02!sn-xit-05!supernews.com!feed.textport.net!diablo.netcom.net.uk!netcom.net.uk!newsfeed.icl.net!kibo.news.demon.net!demon!newsfeed.belnet.be!naxos.belnet.be!news.belnet.be!news.uia.ac.be From: Johan Vervloet <johan@gewestpallieter.be> Newsgroups: be.comp.programming Subject: Re: Nog ��n maal uit de nood helpen. Date: Tue, 11 Jun 2002 17:48:38 +0200 Organization: University of Antwerp - UIA Lines: 349 Message-ID: <20020611174838.68f4e5f5.johan@gewestpallieter.be> References: <B92BDED1.684E%christof_laeremans@hotmail.com> NNTP-Posting-Host: hnets.uia.ac.be Mime-Version: 1.0 Content-Type: text/plain; charset=US-ASCII Content-Transfer-Encoding: 7bit X-Trace: naxos.belnet.be 1023810520 24268 143.169.254.1 (11 Jun 2002 15:48:40 GMT) X-Complaints-To: abuse@belnet.be NNTP-Posting-Date: Tue, 11 Jun 2002 15:48:40 +0000 (UTC) X-Newsreader: Sylpheed version 0.7.6 (GTK+ 1.2.10; i686-pc-linux-gnu) X-Original-NNTP-Posting-Host: pcinf24.uia.ac.be X-Original-Trace: 11 Jun 2002 17:48:35 +0200, pcinf24.uia.ac.be