Du bist nicht angemeldet.

Stilllegung des Forums
Das Forum wurde am 05.06.2023 nach über 20 Jahren stillgelegt (weitere Informationen und ein kleiner Rückblick).
Registrierungen, Anmeldungen und Postings sind nicht mehr möglich. Öffentliche Inhalte sind weiterhin zugänglich.
Das Team von spieleprogrammierer.de bedankt sich bei der Community für die vielen schönen Jahre.
Wenn du eine deutschsprachige Spieleentwickler-Community suchst, schau doch mal im Discord und auf ZFX vorbei!

Werbeanzeige

1

13.07.2012, 18:08

Kapitel 5 Mehrdimensionales Array grafisch ausgeben?

Hallo Forum,
ich beschäftige mich nun schon seit längerer Zeit mit dem Buch: "C++ für Spieleprogrammierer". Nun ist es so, dass ich nicht ganz verstehe wie man ein mehrdimensionales Array richtig ausgibt. Als Beispiel, ich wollte mit diesem Code:

C-/C++-Quelltext

1
2
3
4
5
6
7
8
9
10
11
void FeldAnzeigen()
{
    for(int x=0; x<5; x++)
    {
        for(int y=0; y<5; y++)
        {
            cout << ".";
        }
    }
    cout << endl;
}
dieses Array: "int Feld[5][5];" ausgeben, doch alles was ich erhalte ist "........................................" und zwar genau 25 mal, allerdings möchte ich eine quadratische Anordnung. :dash:
Ich wäre sehr dankbar, wenn mir jemand dies Erklären könnte. :thumbsup:

dot

Supermoderator

Beiträge: 9 757

Wohnort: Graz

  • Private Nachricht senden

2

13.07.2012, 18:09

Naja, wenns quadratisch sein soll, wirst du da wohl irgendwo Zeilenumbrüche brauchen... ;)

3

13.07.2012, 18:26

Also schlussendlich soll es so aussehen:
.....
.....
.....
.....
.....

Im Buch geht es aber ich verstehe es nicht ganz :hmm:

4

13.07.2012, 18:28

C-/C++-Quelltext

1
2
3
4
5
6
7
8
9
10
11
12
void FeldAnzeigen()
{
    for(int x=0; x<5; x++)
    {
        for(int y=0; y<5; y++)
        {
            cout << ".";
        }
        cout << endl; // sondern hier
    }
    // cout << endl; nicht hier
}

5

13.07.2012, 19:08

Ok danke es hat funktioniert, doch kann mir jemand auch erklären wie das Prinzip genau funktioniert? Denn so wie ich es verstehe startet x und y mit 0 und wird immer pro Druchlauf um eins erhöht, sprich der erste Wert von (x/y) "." wird hier gesetzt (0/0). Oder stelle ich mir ein 2 dimensionales Array falsch vor, ich denke nämlich, dass es wie ein Kordinatensystem aufgebaut ist.

6

13.07.2012, 19:12

Es beginnt mit der ersten Schleife, diese trifft dann auf die zweite Schleife. Diese wird 5 mal ausgeführt (von 0 bis 4). Dadurch entstehen deine ersten 5 Punkte. Danach wird die zweite Schleife verlassen und ein Absatz wird erstellt. Jetzt beginnt das ganze wieder von vorne und zwar vier mal.

Das wars auch schon^^

7

13.07.2012, 19:16

Ach so das Prinzip ist ja wirklich simpel, danke. :thumbsup: :thumbsup: :thumbsup: :thumbsup: :thumbsup: :thumbsup: :thumbsup:
Nun ist alles klar, ich hätte einfach die for-Schleifen von Anfang an besser beachten sollen :crazy:

NachoMan

Community-Fossil

Beiträge: 3 885

Wohnort: Berlin

Beruf: (Nachhilfe)Lehrer (Mathematik, C++, Java, C#)

  • Private Nachricht senden

8

13.07.2012, 20:08

Oder stelle ich mir ein 2 dimensionales Array falsch vor, ich denke nämlich, dass es wie ein Kordinatensystem aufgebaut ist.

Es kann so interpretiert werden. Intern ist es ein normales Array mit der Größe höhe*breite, so hast du es anfangs ja auch ausgegeben.

Stell dir vor du hast ein Array mit der größe [5][6]. Das entspricht einem normalen Array mit der Größe [30].
Gibst du nun array[2][3] ein schreibt der Kompiler dir es so um: array[2+5*3] also array[x+breite*y].
Das wird später vielleicht nochmal wichtig für dich, also beschäftige dich ruhig etwas öfter damit.
"Der erste Trunk aus dem Becher der Erkenntnis macht einem zum Atheist, doch auf dem Grund des Bechers wartet Gott." - Werner Heisenberg
Biete Privatunterricht in Berlin und Online.
Kommt jemand mit Nach oMan?

Werbeanzeige