🚀 go-pugleaf

RetroBBS NetNews Server

Inspired by RockSolid Light RIP Retro Guy

Article View: be.comp.programming
Article #8692

Re: Nog ��n maal uit de nood helpen.

#8692
From: Johan Vervloet
Date: Tue, 11 Jun 2002 15:48
349 lines
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.be
References: <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