Herzlich Willkommen, lieber Gast!
  Sie befinden sich hier:

  Forum » C / C++ (WinAPI, Konsole) » Random integer Array sortieren

Forum | Hilfe | Team | Links | Impressum | > Suche < | Mitglieder | Registrieren | Einloggen
  Quicklinks: MSDN-Online || STL || clib Reference Grundlagen || Literatur || E-Books || Zubehör || > F.A.Q. < || Downloads   

Autor Thread - Seiten: > 1 <
000
02.08.2004, 11:12 Uhr
Zero



Hi Leute, mein Problem ist das ich nicht weiß was hier beim sortieren falsch läuft. Bin für jeden hinweiß sehr sehr dankbar
Es werden irgendwie immer die selben "zufalls" Zahlen ausgeben und bei jedem 2 ten Aufruf schmiert das ganze Programm ab seit dem ich das sortieren implementiert habe.

Das Array soll 15 Zahlen aufnehmen !


C++:


int a[14],i = 0;
String v = "";

int w,x,y,z = 13;


//---------------------------------------------  Zufallszahlengenerator

for (i = 0; i <= 14; i++)
{
a[i] = random(79) +1      //Zufallszahlen zwischen 1 und 80
}


//---------------------------------------------  Array sortieren


for (w = 0 ;  w <= 14; w++)
{
     for (x = 0; x <= z; x++)
   {
     if (a[x] > a[x + 1])
     {
       y = a[x];
       a[x] = a[x + 1];
       a[x + 1] = y;
     }
   }
  z--;
}






Hat jemand ne Anmerkung dazu ?

Dieser Post wurde am 02.08.2004 um 11:14 Uhr von Zero editiert.
 
Profil || Private Message || Suche Download || Zitatantwort || Editieren || Löschen || IP
001
02.08.2004, 11:19 Uhr
Guybrush Threepwood
Gefürchteter Pirat
(Operator)



Zitat:

for (w = 0 ; w <= 14; w++)
{
for (x = 0; x <= z; x++)


Da du nur 14 Elemente hast, solltest du jeweils nur < anstatt <= verwenden, ansonsten greifst du in der ersten Schleife auf fremden Speicher zu.

Dieser Post wurde am 02.08.2004 um 11:20 Uhr von Guybrush Threepwood editiert.
 
Profil || Private Message || Suche Download || Zitatantwort || Editieren || Löschen || IP
002
02.08.2004, 11:26 Uhr
Zero




Zitat von Guybrush Threepwood:

Zitat:

for (w = 0 ; w <= 14; w++)
{
for (x = 0; x <= z; x++)


Da du nur 14 Elemente hast, solltest du jeweils nur < anstatt <= verwenden, ansonsten greifst du in der ersten Schleife auf fremden Speicher zu.




0 bis 14 sind doch 15 Felder, tut das trotzdem was zur Sache ?

habe bedenken das es evtl an folgendem liegt:


C++:

  int a[14];
  int z = 13;



..........aber irgendwie muss ich doch eine Stelle immer Vorziehen um zu vergleichen ,bin etwas planlos

Dieser Post wurde am 02.08.2004 um 11:28 Uhr von Zero editiert.
 
Profil || Private Message || Suche Download || Zitatantwort || Editieren || Löschen || IP
003
02.08.2004, 11:55 Uhr
Guybrush Threepwood
Gefürchteter Pirat
(Operator)


aber 0 bis kleiner gleich 14 sind 15 felder
 
Profil || Private Message || Suche Download || Zitatantwort || Editieren || Löschen || IP
004
02.08.2004, 12:06 Uhr
Tommix



Der Irrtum liegt wohl hier:

C++:
int a[14];


definiert ein Feld mit 14 Werten: a[0] bis a[13], d.h. es muss

C++:
int a[15];


heissen, wenn der Index bis 14 laufen soll.

- Tommix
 
Profil || Private Message || Suche Download || Zitatantwort || Editieren || Löschen || IP
005
02.08.2004, 12:15 Uhr
Zero




Zitat von Tommix:
Der Irrtum liegt wohl hier:

C++:
int a[14];


definiert ein Feld mit 14 Werten: a[0] bis a[13], d.h. es muss

C++:
int a[15];


heissen, wenn der Index bis 14 laufen soll.

- Tommix




Thx Leute, *MEGA SCHÄM*, wie banal -wieder nur weil ich nicht 1 + 1 rechnen kann
 
Profil || Private Message || Suche Download || Zitatantwort || Editieren || Löschen || IP
006
02.08.2004, 13:03 Uhr
Zero



int a[15];
z = 13; } läuft prima !!!
 
Profil || Private Message || Suche Download || Zitatantwort || Editieren || Löschen || IP
007
02.08.2004, 13:40 Uhr
Guybrush Threepwood
Gefürchteter Pirat
(Operator)


@Tommix:

Wie rum man das sieht ist ja egal
 
Profil || Private Message || Suche Download || Zitatantwort || Editieren || Löschen || IP
008
02.08.2004, 15:29 Uhr
RedEagle



wenn ich recht informiert bin:
a[14];
0 bis 13 + "\0" = 14
--
MFG RedEagle

Dieser Post wurde am 02.08.2004 um 15:30 Uhr von RedEagle editiert.
 
Profil || Private Message || Suche Download || Zitatantwort || Editieren || Löschen || IP
009
02.08.2004, 15:45 Uhr
Guybrush Threepwood
Gefürchteter Pirat
(Operator)


So ein Schwachsinn,

1. ist das ein Integer Array
2. selbst wenn es ein Character Array wäre, würde es trotzdem nur von 0-13 gehen und das abschließende Null-Zeichen müsste innerhalb dieser 14 Elemente sein.
 
Profil || Private Message || Suche Download || Zitatantwort || Editieren || Löschen || IP
Seiten: > 1 <     [ C / C++ (WinAPI, Konsole) ]  


ThWBoard 2.73 FloSoft-Edition
© by Paul Baecher & Felix Gonschorek (www.thwboard.de)

Anpassungen des Forums
© by Flo-Soft (www.flo-soft.de)

Sie sind Besucher: