/ Forside / Teknologi / Udvikling / C/C++ / Nyhedsindlæg
Login
Glemt dit kodeord?
Brugernavn

Kodeord


Reklame
Top 10 brugere
C/C++
#NavnPoint
BertelBra.. 2425
pmbruun 695
Master_of.. 501
jdjespers.. 500
kyllekylle 500
Bech_bb 500
scootergr.. 300
gibson 300
molokyle 287
10  strarup 270
Hvad er der galt i følgende kode?
Fra : Bjørn Petersen


Dato : 07-12-01 20:14

Jeg får segmentationfejl nogle gange, jo større n er desto oftere sker det.
Ved n>400 er det stort set hver gang.
Hvad er fejlen?

Bjørn
_________________________________________________________-
#include "iostream.h"
#include "stdlib.h"
#include "time.h"

bool erDerAllerede(int, int*);

int main(int argc, char **argv) {
int n = 1;
int count = 0;

int *raekkefoelge = new int(n);

srand(time(NULL));

while (count < n) {
raekkefoelge[count] = rand()/1000%n+1;
if (!erDerAllerede(count, raekkefoelge)) {
count++;
}
}

for(int i=0; i<n; i++) {
cout << raekkefoelge[i] << endl << flush;
}

return 0;
}

bool erDerAllerede(int x, int *array) {
for(int i=0; i<x; i++) {
if (array[x] == array[i]) return true;
}
return false;
}




 
 
Ivan Johansen (07-12-2001)
Kommentar
Fra : Ivan Johansen


Dato : 07-12-01 21:02

Bjørn Petersen wrote:

> Jeg får segmentationfejl nogle gange, jo større n er desto oftere sker det.
> Ved n>400 er det stort set hver gang.
> Hvad er fejlen?


[snip]

> int *raekkefoelge = new int(n);

Her allokerer du en int og initialiserer den med værdien i n. Du mener
tilsyneladende et array med n elementer:
int *raekkefoelge = new int[n];

Husk at deallokere dit array igen, når du er færdig med at bruge det:
delete[] array;

Ivan Johansen


Bjørn Petersen (07-12-2001)
Kommentar
Fra : Bjørn Petersen


Dato : 07-12-01 21:06

Hmmm... jeg havne eller prøvet begge dele.
Det stod på begge måder i en bog jeg havde, men det lader til at virke nu!
Tak skal du have!

Bjørn

"Ivan Johansen" <NG@Padowan.dk> wrote in message
news:3C112036.10208@Padowan.dk...
> Bjørn Petersen wrote:
>
> > Jeg får segmentationfejl nogle gange, jo større n er desto oftere sker
det.
> > Ved n>400 er det stort set hver gang.
> > Hvad er fejlen?
>
>
> [snip]
>
> > int *raekkefoelge = new int(n);
>
> Her allokerer du en int og initialiserer den med værdien i n. Du mener
> tilsyneladende et array med n elementer:
> int *raekkefoelge = new int[n];
>
> Husk at deallokere dit array igen, når du er færdig med at bruge det:
> delete[] array;
>
> Ivan Johansen
>



Morten Brix Pedersen (08-12-2001)
Kommentar
Fra : Morten Brix Pedersen


Dato : 08-12-01 03:24

Da dit problem allerede er løst, har jeg kun et par kommentarer til koden.

Bjørn Petersen wrote:

> #include "iostream.h"


Du bør(skal) bruge #include <iostream>, det er en standard C++ header.


> #include "stdlib.h"


Du bør bruge #include <cstdlib>, det er en standard C++ header som
putter C Standard Library i std namespace.


> #include "time.h"


#include <ctime>

- Morten.


Claus Jensen (09-12-2001)
Kommentar
Fra : Claus Jensen


Dato : 09-12-01 16:40

Husk da også lige at skrive "using namespace std" efter dine include
sætninger. Ellers skal du skrive std::cout eller noget lignende hver gang du
vil bruge nogle kommandoer i std namespacet.

- Claus

"Morten Brix Pedersen" <morten@wtf.dk> skrev i en meddelelse
news:3C1179AD.20300@wtf.dk...
> Da dit problem allerede er løst, har jeg kun et par kommentarer til koden.
>
> Bjørn Petersen wrote:
>
> > #include "iostream.h"
>
>
> Du bør(skal) bruge #include <iostream>, det er en standard C++ header.
>
>
> > #include "stdlib.h"
>
>
> Du bør bruge #include <cstdlib>, det er en standard C++ header som
> putter C Standard Library i std namespace.
>
>
> > #include "time.h"
>
>
> #include <ctime>
>
> - Morten.
>



Morten Brix Pedersen (09-12-2001)
Kommentar
Fra : Morten Brix Pedersen


Dato : 09-12-01 20:44

Claus Jensen wrote:

> Husk da også lige at skrive "using namespace std" efter dine include
> sætninger. Ellers skal du skrive std::cout eller noget lignende hver gang du
> vil bruge nogle kommandoer i std namespacet.


Det er bedst hvis man prøver at undgå 'using namespace std', det
forurener dit namespace, og gør faktisk også compile tid langsommere.

Du bør hellere bruge 'using std::cout' o.s.v., til de ting du bruger ofte.

- Morten.


Søg
Reklame
Statistik
Spørgsmål : 177552
Tips : 31968
Nyheder : 719565
Indlæg : 6408847
Brugere : 218887

Månedens bedste
Årets bedste
Sidste års bedste