Ich versuch euch mal mein Problem zu schildern, vielleicht könnt ihr mir ja weiter helfen.
Wir sollen in Informatik eine Aufgabe in C programmieren. Was die Aufgabe ist, ist ja mal Nebensache. Es geht um eine Tabelle: Der Benutzer soll zuvor dem Programm vorgeben wie groß die Tabelle (Spaltenzahl n, und Zeilenzahl m) sein soll. Danach ob er die Tabelle selber mit Zahlen füllen soll, oder ob sie automatisch (Stichwort Zufallszahlen) gefüllt werden soll. Danach soll die Tabelle ausgegeben werden.
Jetzt hab ich ein Problem bei 10x10 Tabellen. Und zwar sehen die so aus:
Ich weiß ich weiß sieht nicht ganz so gut aus, aber ich denke man kanns erkennen. Mich stört hier die erste und die letzte Spalte. Zum Beispiel die 726 in der ersten Spalte, die steht auch in der 10. Spalte nur eine Zeile darüber. Auch alle anderen Zahlen der ersten Spalte stehen in der 10. Zeile.
Dieses Problem tritt nur bei 10x10 Tabellen auf. Sowohl bei manueller Eingabe als auch bei automatischer Eingabe der Zahlen. Im Debugmodus hab ich mir das ganze auch schon angeschaut. Also eingelesen in die Variable (int schachbrett [9][9]) wird es richtig.
Könnt ihr mir sagen wie es dazu kommt???
Hier mal der entscheidende Ausschnitt im Quellcode dazu:
// Automatische Eingabe der Werte (Zufallszahlen)
if (auto_manuell==‚a‘ || auto_manuell==‚A‘)
{
srand( (unsigned)time( NULL ) );
Ich weiß ich weiß sieht nicht ganz so gut aus, aber ich denke
man kanns erkennen. Mich stört hier die erste und die letzte
Spalte. Zum Beispiel die 726 in der ersten Spalte, die steht
auch in der 10. Spalte nur eine Zeile darüber. Auch alle
anderen Zahlen der ersten Spalte stehen in der 10. Zeile.
Dieses Problem tritt nur bei 10x10 Tabellen auf. Sowohl bei
manueller Eingabe als auch bei automatischer Eingabe der
Zahlen. Im Debugmodus hab ich mir das ganze auch schon
angeschaut. Also eingelesen in die Variable (int schachbrett
[9][9]) wird es richtig.
Da ist schon die Ursache: ein int schachbrett[9][9] ist nur für
9 mal 9 Elemente dimensioniert. Wenn du versucht das 10-te Element via schachbrett[0][9] zu lesen, erhälst du automatisch schachbrett[1][0]. Damit lässt sich dein Phänomen fix erklären.
Wenn du wirklich ein 9x9=81 Elemente großes Feld allokiert hast, aber 10x10=100 Elemente beschreibst, so greift auf fremden Speicher zu.
Da ist schon die Ursache: ein int schachbrett[9][9] ist nur
für
9 mal 9 Elemente dimensioniert. Wenn du versucht das 10-te
Element via schachbrett[0][9] zu lesen, erhälst du automatisch
schachbrett[1][0]. Damit lässt sich dein Phänomen fix
erklären.
Wenn du wirklich ein 9x9=81 Elemente großes Feld allokiert
hast, aber 10x10=100 Elemente beschreibst, so greift auf
fremden Speicher zu.
Wortfuchs
Na gut. Du hast recht- es funktioniert. Jetzt versteh ich nur nicht warum. Es wird doch bei Null angefangen zu zählen. Das heißt von 0 bis neun habe ich doch 10 Felder…