Article View: be.comp.programming
Article #9549Re: Dynamische Array in C++
From: Christof Laeremans
Date: Thu, 25 Apr 2002 19:11
Date: Thu, 25 Apr 2002 19:11
223 lines
5934 bytes
5934 bytes
On 4/25/02 9:01 PM, in article voYx8.39651$Ze.6724@afrodite.telenet-ops.be,
"Philip Paeps" <philip@paeps.cx> wrote:
> Christof Laeremans <christof_laeremans@hotmail.com> wrote:
>> Even de uitleg geven van het programma.
>>
>> Het moet een x aantal woorden in lezen zoals
>
> [...]
>
>> Deze worden moeten dan in een grote string komen en als uitvoer geven
>> Er was eens een hond die verliefd was op een tuinkabouter.
>
> [...]
>
>> Wat is nu het probleem... Als ik deze code run met CodeWarrior op Mac OS X
>> dan geeft hij geen foutmelding tijdens het compileren en het runnen.
>
> Was dat hierboven de volledige code? Ik ontbreek preciess een header file.
> Kan je anders even de volledige code posten, dan kunnen andere het ook
> proberen te compilen, en zien waar wat misloopt.
>
> Heb je al geprobeert met warnings te compilen? (-Wall met gcc, CodeWarrior
> ken ik niet).
>
>> Laat ik dit programma uitvoeren via VC++ dan krijg volgende melding (alleen
>> bij het uitvoeren van het programma, niet tijdens het compileren.)
>
> VC++ is dan ook niet echt *de* compiler bij uitstek...
>
>> Debug Error !
>> DAMAGE: after Normal block (#43) at 0x00300040
>
> Wat een fantastisch descriptieve error! Kan je hem backtracen? Zien waar het
> precies misloopt?
>
>> En nu stel ik me de vraag. Heb ik nu een array die zich zelf groter kan
>> maken of is het gewoon Windows of Mac OS X dat niet normaal doet.
>
> Waarschijnlijk wintendo dat doet waarvoor het gemaakt is: niet werken. Het is
> een redelijk eenvoudige implementatie van een dynamic array, maar ik zou er
> toch wat constraints en error-handling inbouwen. Memory lekken zijn namelijk
> gouw geschreven :-/
>
>> Alvast bedankt voor eventuele tips.
>
> Post even je code, dan probeer ik het hier te compilen, en te zien waar het
> zou kunnen mislopen.
>
> In ieder geval zijn constructies als #include <iostream.h> niet wenselijk,
> gebruik gewoon <iostream> en consoorten.
>
> - Philip
>
Ok
Hier komt de volledige code.
Dat van #include <iostream.h>. Ik heb het eens geprobeerd in een oefeningen
die we moesten maken maar dan via #include <iostream> en het werd volledig
afgekeurd door de docent :(
Nu, ja de volledige code.
Alvast bedankt.
Mvg,
Christof Laeremans
**** Header File *****
#ifndef __DGSTRING_H
#define __DGSTRING_H
#include <iostream.h>
const int MAX = 100;
class LangeString
{
private:
int _lengte;
char * _LangeString;
char _string[MAX];
public:
LangeString();
~LangeString();
void aanmakenDA();
void setString(char string[]);
char * getLangeString();
};
#endif
***************************
******* implementatie van de header file *******
#include <iostream.h>
#include <string.h>
#include "DGString.h"
#include <ctype.h>
LangeString::LangeString()
{
//Constructor
_lengte = 0;
}
LangeString::~LangeString()
{
//Destructor
delete [] _LangeString;
}
void LangeString::aanmakenDA()
{
_LangeString = new char[1];
*_LangeString = NULL;
}
void LangeString::setString(char string[])
{
_lengte = strlen(string);
if(strlen(_LangeString)==0)
{
strncpy(_LangeString,string,_lengte+1); //+1 om het \0 toe te
voegen.
_LangeString[0] = toupper(_LangeString[0]);
}
else
{
strcat(_LangeString," ");
strncat(_LangeString,string, _lengte);
}
}
char * LangeString::getLangeString()
{
strcat(_LangeString,".");
return _LangeString;
delete [] _LangeString;
}
*************
*****Programma***********
#include <iostream.h>
#include "DGString.h"
void emptyBuffer();
int main()
{
char string[MAX];
char antwoord;
LangeString Woord;
Woord.aanmakenDA();
do
{
cout<<"Geef een woord in: ";
cin.get(string,MAX);
emptyBuffer();
Woord.setString(string);
cout<<endl;
cout<<"Nog een woord ingeven? (j/n): ";
cin>> antwoord;
cin.get(); //Nodig om de enter om het antwoord in te lezen op te
vangen.
//Anders oneindige lus.
cout<<endl;
}
while( antwoord != 'n');
cout<<endl;
cout<<"De lange string is: "<<Woord.getLangeString();
}
void emptyBuffer()
{
char c;
do
{
cin.get(c);
}
while (c != '\n');
}
**********************
Technical Details
Message-ID:
<B8EE218B.2016%christof_laeremans@hotmail.com>Path:
arc1-ca.pugleaf.net!archiver1.google.com!news1.google.com!sn-xit-02!sn-xit-01!supernews.com!195.40.4.120.MISMATCH!easynet-quince!easynet.net!teaser.fr!proxad.net!skynet.be!skynet.be!news.be.wanadoo.com!news.wanadoo.be!not-for-mailReferences:
<B8EE1A81.2010%christof_laeremans@hotmail.com> <voYx8.39651$Ze.6724@afrodite.telenet-ops.be>Show Full Headers
Complete Article Headers
X-Google-Language: DUTCH,ASCII-7-bit X-Google-Thread: fcea4,d8a342a4bf67824a X-Google-Attributes: gidfcea4,public X-Google-ArrivalTime: 2002-04-25 12:11:49 PST Path: arc1-ca.pugleaf.net!archiver1.google.com!news1.google.com!sn-xit-02!sn-xit-01!supernews.com!195.40.4.120.MISMATCH!easynet-quince!easynet.net!teaser.fr!proxad.net!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: Re: Dynamische Array in C++ Date: Thu, 25 Apr 2002 21:11:39 +0200 Organization: Wanadoo Belgium Lines: 225 Message-ID: <B8EE218B.2016%christof_laeremans@hotmail.com> References: <B8EE1A81.2010%christof_laeremans@hotmail.com> <voYx8.39651$Ze.6724@afrodite.telenet-ops.be> NNTP-Posting-Host: adsl-143-191.wanadoo.be Mime-Version: 1.0 Content-Type: text/plain; charset="US-ASCII" Content-Transfer-Encoding: 7bit X-Trace: sinclair.be.wanadoo.com 1019761904 1401734 213.177.143.191 (25 Apr 2002 19:11:44 GMT) X-Complaints-To: abuse@wanadoo.be NNTP-Posting-Date: Thu, 25 Apr 2002 19:11:44 +0000 (UTC) User-Agent: Microsoft-Entourage/10.0.0.1309