C++ Mehrdimensionale Arrays

08/13/2011 18:17 Polake1#1
Hey Leute,
Ich lern C++ schon seit 2 Monaten und bin jetzt bei den Arrays und Strukturen
(Vll. brauchte ich ein bissl. lange,aber dafür behersche ich das gelernte zu 100%).
und zwar habe ich da ein BspQuelltext:


Code:
#include <iostream>

using namespace std;

// Hauptprogramm
//
int main ()
{
	// Konstanten
	//
	const int Breite = 3; // Breite der Karte
	const int Hoehe = 3;  // Hoehe der Karte

	// Variablen
	//
	int Karte[Breite][Hoehe];  // Zweidimensionales Array für die Karte
	int x, y;                  // Schleifenzähler
	int Zaehler = 0;           // Zum Füllen der Karte

	// Karte mit Werten füllen
	for (y=0; y<Hoehe; y++)
	{
		for (x=0; x<Breite; x++)
		{
			Karte[x][y] = Zaehler;
			Zaehler++;
		}
	}

	// Karte ausgeben
	for (y=0; y<Hoehe; y++)
	{
		for (x=0; x<Breite; x++)
		{
			cout << Karte[x][y];
		}

		cout << endl;
	}

	return 0;
}

kann mir jmd. diesen Quelltext vll. Schritt für Schritt erklären
ich weiß das es vll. bissl aufwendig ist aber wäre furchtbar dankbar :)
Schonmal im voraus DANKE!

MfG
Polake1
08/13/2011 18:28 Aimless Angel#2
ich bin jetzt nicht der oberpro aber das hier:

char Name[30];

ist ja nun die deklaration einer 1dimensionalen matrix! ;)

EDIT: btw wenn du schon mehrere monate c++ machst, dann solltest du doch alles kennen! sind doch nur ein paar schleifen!
08/13/2011 19:25 Polake1#3
Sry falscher Quelltext
Jetzt richtiger
08/13/2011 19:51 LostHope.#4
Quote:
#include <iostream>

using namespace std;
Hier geschieht nichts anderes, als dass die Standardlibrary eingebunden wird. Eine Library enthält schon vorgefertigten Code und Funktionen, die du im Nachhinein nutzen kannst. Der Namespace sagt, in welchem Namensraum wir uns befinden.

Quote:
// Hauptprogramm
//
int main ()
{
Hier wird dem Programm bescheid gesagt, dass der auszuführende Code jetzt kommt. Also ab hier beginnt dein Programm.

Quote:
// Konstanten
//
const int Breite = 3; // Breite der Karte
const int Hoehe = 3; // Hoehe der Karte
Konstanten enthalten Werte die konstant bleiben, sprich nicht verändert werden.

Quote:
// Variablen
//
int Karte[Breite][Hoehe]; // Zweidimensionales Array für die Karte
int x, y; // Schleifenzähler
int Zaehler = 0; // Zum Füllen der Karte
Variablen sind nichts anderes als Speicherplätze, die gewisse Informationen tragen. Wenn ich das richtig sehe, werden sie hier nur initialisiert.

Quote:
// Karte mit Werten füllen
for (y=0; y<Hoehe; y++)
{
for (x=0; x<Breite; x++)
{
Karte[x][y] = Zaehler;
Zaehler++;
}
}
Hier werden die vorher instanziierten Variablen mit Werten gefüllt. Das geschieht in einer Schleife. Die Bedingung ist, dass y, den Wert 3 enthält. Darin ist noch eine weitere Schleife, die haben will, dass x, 3 ist.

Quote:
// Karte ausgeben
for (y=0; y<Hoehe; y++)
{
for (x=0; x<Breite; x++)
{
cout << Karte[x][y];
}

cout << endl;
}
Durch cout werden die werte ausgegeben, das kann man sich einfach merken, nämlich hört sich cout beim aussprechen so an "see out"(guck raus).

Quote:
return 0;
}
"return 0" wird returnes(zurückgegeben), wenn das Programm alles ohne Schwierigkeiten oder Fehler ausführen konnte.

Ich hoffe ich konnte dir helfen... Falls du Hilfe bei den Schleifen brauchst, schreib einfach.
08/13/2011 20:23 Polake1#5
Vll. hast du mir nicht ganz geholfen aber für den Aufwand schonma thx.
Mein Problem liegt eher bei den Arrays also die "auffüllung".
Diesen Teil verstehe ich eher nicht:


Quote:
for (y=0; y<Hoehe; y++)
{
for (x=0; x<Breite; x++)
{
Karte[x][y] = Zaehler;
Zaehler++;
}
}

// Karte ausgeben
for (y=0; y<Hoehe; y++)
{
for (x=0; x<Breite; x++)
{
cout << Karte[x][y];
}

cout << endl;
}
08/13/2011 20:48 LostHope.#6
Quote:
for (y=0 "y" wird der Wert "0" zugewiesen; y<Hoehe;Die Bedingung hier ist jetzt, dass die Höhe größer als "y" ist. y++Hier wird gesagt, was getan werden muss, also y muss erhöht werden.)
{
for (x=0; x<Breite; x++)
{
Karte[x][y] = Zaehler;
Zaehler++;
}
}

// Karte ausgeben
for (y=0; y<Hoehe; y++)
{
for (x=0; x<Breite; x++)
{
cout << Karte[x][y];
}

cout << endl;
}
wenn du es nicht verstanden hast, musst du dir einfach noch einmal angucken was schleifen machen.
08/14/2011 04:24 MoepMeep#7
Code:
	for (y=0; y<Hoehe; y++)
	{
		for (x=0; x<Breite; x++)
		{
			Karte[x][y] = Zaehler;
			Zaehler++;
		}
	}
Karte[0][0] = 0;
Karte[1][0] = 1;
Karte[2][0] = 2;
Karte[0][1] = 3;
Karte[1][1] = 4;
Karte[2][1] = 5;
Karte[0][2] = 6;
Karte[1][2] = 7;
Karte[2][2] = 8;

Mit jeder For-Schleife wird jeweils eine Dimension des Arrays durchlaufen. Du könntest das ganze mit einem Haus vergleichen.
Haus[4][2] würde einem Haus mit 4 Stockwerken und 2 Räumen/Wohnungen pro Stockwerk entsprechen. Die erste Zahl gibt das Stockwerk an, die 2. den Raum.

Code:
for(int stockwerk = 0;stockwerk<4;stockwerk++)
{
    for(int wohnung = 0;wohnung<2;wohnung++)
    {
           Haus[stockwerk][wohnung] = ...
     }
}
@LostHope Selten so lustigen bullshit gelesen, thanks :>
08/14/2011 08:40 Polake1#8
Danke MoepMeep darum gings mir zwar habe ich das schon gestern Abend verstanden aber du hast die beste Hilfe gegeben :)
Thx.