Arrays ...sollte eigentlich einfach sein oder ? ...falsch :p

peace_maker

Cadet 4th Year
Registriert
Dez. 2010
Beiträge
111
Guten Abend,
ich habe heute ein C - Programm geschrieben, dass 2 arrays befüllt. Das erste array wird mit zufallszahlen vollgepackt und das zweite bekommt von 100 bis 0.

Jetzt habe ich scheinbar einen Fehler drin, ich weiß WO er ist, aber das WARUM ist mir völlig schleierhaft.

Nachdem ich mein Zufallsarray (zufall) befüllt und gemischt habe, wird mein anderer Array (hinten) dran.

Ich habe VOR und NACH dem befüllen des 2. arrays ein printf drin, dass die [0] stelle des ersten arrays ausgibt und genau da liegt der Fehler, den ich nicht verstehe, die Zahlen ändern sich. Ich spreche mein erstes array überhaupt nichtmehr an .. ich befasse mich nurnoch mit dem 2. array, aber trotzdem ändern sich die werte in Array Nr. 1 .. wie ?


http://pastebin.com/4wDRxjU1

Ich hab das Programm noch nem Kollegen geschickt, und bei ihm ist es nicht die [0] stelle, die mit 0 überschrieben wird, sondern die [100] stelle, die mit 100 überschrieben wird. also scheinbar variiert das etwas aber im grunde bleibt der fehler gleich.

wäre über die Auflösung des Fehlers sehr dankebar :D

mfG
Peace_maker
 
PHP:
for(i=0; i<101; i++)
{
    zufall[i]=i;
}

Du kannst nicht von 0 bis Index 100 gehen, wenn du ein Array der Größe 100 hast. Du hast dann nur die Indices von 0 bis 99 zur Verfügung(=100 "Slots").
Du schreibst und liest daher von undefiniertem Speicherbereich, wenn du auf zufall[100] zugreifst. Deshalb ändern sich die Zahlen.

Gleicher Fehler dann nochmal weiter unten mit dem anderen Array.
 
Du hast Arrays der Größe 100 erstellt, füllt das "Zufalls"-Array aber mit dem falschen Index.
//Befuellung des Arrays zufall
for(i=0; i<101; i++){
zufall=i;
}

Das sind 101 (von 0 bis 100) Werte.
for(i=0; i<100; i++)

müsste es heißen^^
kommt mehrmals vor diese falschen Indexe.
 
Ich habe zwar nicht den Fehler an sich gefunden (glaub ich), aber (wenn ich mich nicht völlig täusche, hab 2 Jahre nichts mehr mit C gemacht) solltest du in Zeile 22 nur bis < 100 zählen, da ein Array[100] die Indize [0] bis [99] hat
 
Jopp, das ist auch der Unterschied zwischen Informatikern und Mathematikern (Naja und dass ihr code oft schrecklich leserlich ist):
Informatiker starten beim Zählen mit 0, Mathematiker bei 1.
 
omg ^_^


danke leute
 
Zurück
Oben