Frage von IBAxhascox, 44

Wie funktioniert diese C Programmierung 2D Feld mit Variablen?

Code:

int F[3][3];
int x;
int y;
printf("%d\n", F[1][1]);

y = 1;
do {

    printf("%d %d %d\n", F[1][y], F[2][y], F[3][y]);
    system("PAUSE");
    y = y + 1;
} while (y <= 2);

Ausgabe: 

3 0 1 

0 2005079392 2

Weshalb funktioniert dieser Code nicht? (Ja ich weis ich nutze nicht alle Felder) - Wie kann ich mit Feld[x][y] umgehen und wie funktionieren Felder mit Variablen? Danke schonmal....

Hilfreichste Antwort - ausgezeichnet vom Fragesteller
von J0T4T4, 24

Was machst Du denn da für einen Müll -.-

Du hast einen Array der Länge 3, und willst auf das 4. Element zugreifen. Kein Wunder, dass da dann nichts vernünftiges bei rauskommt. Indizes fangen bei 0 an, Du bekommst also mit test[0] das erste Element. Und mit test[3] dann das vierte, welches Du niemals (bewusst) definiert hast.

Ach ja - verzichte doch bitte auf system()

Kommentar von IBAxhascox ,

system habe ich nur eingebaut zu test zwecken eingebaut... ich weis dass Arrays bei 0 beginnen, ich will ein 3x3 Feld. für einfachere Handhabung wollte ich die Feld[0][y] und Feld[x][0] leer lassen. Funktioniert es nur nicht weil ich keine Werte eingetragen habe? Sollte es dann gehen? 

Kommentar von J0T4T4 ,

Dadurch, dass Du test[0] nicht verwendest, kannst Du Dir nicht einfach test[3] nehmen. Wenn Du ein 3×3 Feld möchtest, ohne das erste zu verwenden, dann musst Du Dir ein 4×4 Feld anlegen. Du hast aber ein 3×3 angelegt, und hast daher effektiv nur 2×2.

Dein Fehler liegt wohl darin, dass Du nicht weißt, dass bei der Deklaration nicht mit 0 angefangen wird. F[3][3] macht ein 3×3-Feld, und kein 4×4.

Kommentar von IBAxhascox ,
int F[3][3];

int x;
int y;

F[0][0] = 1;F[0][1] = 1;F[0][2] = 1;F[0][3] =1 ;
F[1][0] = 1;F[1][1] = 1;F[1][2] = 1;F[1][3] =1 ;
F[2][0] = 1;F[2][1] = 1;F[2][2] = 1;F[2][3] =1 ;
F[3][0] = 1;F[3][1] = 1;F[3][2] = 1;F[3][3] =1 ;
y = 0;
do {
printf("%d %d %d\n", F[1][y], F[2][y], F[3][y]);

y = y + 1;
} while (y <= 2);

Raus kommt: 

1 1 1

1 1 1

1 1 2

Danke schonmal sieht ziemlich gut aus... aber weshalb ist das die letzte Zahl eine 2?!

Kommentar von IBAxhascox ,

Vielen Dank für deine Antworten ... Habe es nun Verstanden ^^ 

Kommentar von J0T4T4 ,

Dann ist ja gut :D

Und das mir der 2 ist jetzt auch klar?

Antwort
von ByteJunkey, 32

Ich komme zwar von C++, aber ich sehe keinen Zeilenumbruch, oder täusche ich mich?

Kommentar von IBAxhascox ,

sorry den habe ich in der Ausgabe nicht geschrieben:

Richtige Version: 

3

3 0 1

0 2005079392 2

Keine passende Antwort gefunden?

Fragen Sie die Community