<?xml version="1.0" encoding="UTF-8"?><rss xmlns:dc="http://purl.org/dc/elements/1.1/" xmlns:content="http://purl.org/rss/1.0/modules/content/" xmlns:atom="http://www.w3.org/2005/Atom" version="2.0"><channel><title><![CDATA[Problem mit mehrdimensionaler Array-Größe]]></title><description><![CDATA[<p>Hi Leute,</p>
<p>ich habe in meinem Programm ein zweidimensionales Array, welches ein Spielfeld darstellt. Bei der Deklaration eines Arrays müssen die Indizes konstant sein, soviel habe ich ja schon gelernt, aber gibt es eine Möglichkeit diese Werte irgendwie zu ändern?<br />
Ich möchte gern eine Option bereitstellen, dass man die Länge und die Breite des Spielfeldes verändern kann, aber wie geht das? Ich habe da schon an Zeiger gedacht und auch schon ausprobiert, aber ich steig da nicht ganz dahinter. Könntet ihr mir da einen Ansatz geben? Ich würde mich über Hilfe freuen.</p>
<p>MfG Apo</p>
]]></description><link>https://www.c-plusplus.net/forum/topic/145696/problem-mit-mehrdimensionaler-array-größe</link><generator>RSS for Node</generator><lastBuildDate>Thu, 03 Sep 2026 13:16:34 GMT</lastBuildDate><atom:link href="https://www.c-plusplus.net/forum/topic/145696.rss" rel="self" type="application/rss+xml"/><pubDate>Sun, 30 Apr 2006 12:47:55 GMT</pubDate><ttl>60</ttl><item><title><![CDATA[Reply to Problem mit mehrdimensionaler Array-Größe on Sun, 30 Apr 2006 12:47:55 GMT]]></title><description><![CDATA[<p>Hi Leute,</p>
<p>ich habe in meinem Programm ein zweidimensionales Array, welches ein Spielfeld darstellt. Bei der Deklaration eines Arrays müssen die Indizes konstant sein, soviel habe ich ja schon gelernt, aber gibt es eine Möglichkeit diese Werte irgendwie zu ändern?<br />
Ich möchte gern eine Option bereitstellen, dass man die Länge und die Breite des Spielfeldes verändern kann, aber wie geht das? Ich habe da schon an Zeiger gedacht und auch schon ausprobiert, aber ich steig da nicht ganz dahinter. Könntet ihr mir da einen Ansatz geben? Ich würde mich über Hilfe freuen.</p>
<p>MfG Apo</p>
]]></description><link>https://www.c-plusplus.net/forum/post/1048344</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/1048344</guid><dc:creator><![CDATA[Apocalypse]]></dc:creator><pubDate>Sun, 30 Apr 2006 12:47:55 GMT</pubDate></item><item><title><![CDATA[Reply to Problem mit mehrdimensionaler Array-Größe on Sun, 30 Apr 2006 13:01:40 GMT]]></title><description><![CDATA[<p>Hallo</p>
<p>in dem du das Feld mit new dynamisch erstellst</p>
<pre><code class="language-cpp">int x* = new int[10]; // erstellt ein dynamisches Array mit 10 Elementen
...
delete[] x; // Löscht das Array mach Gebrauch wieder
</code></pre>
<p>allerdings ist es in C++ einfacher, wenn du std::vector nimmst, das diese dynamsiche Verwaltung für dich übernimmt.</p>
<p>bis bald<br />
akari</p>
]]></description><link>https://www.c-plusplus.net/forum/post/1048357</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/1048357</guid><dc:creator><![CDATA[akari]]></dc:creator><pubDate>Sun, 30 Apr 2006 13:01:40 GMT</pubDate></item><item><title><![CDATA[Reply to Problem mit mehrdimensionaler Array-Größe on Tue, 02 May 2006 16:37:17 GMT]]></title><description><![CDATA[<p>Hi,</p>
<p>ich habe das nun mal mit dem new gemacht, aber der bringt mir nun komische Fehlermeldungen, die ich nicht so ganz verstehe. Hier mein Quellcode:</p>
<pre><code class="language-cpp">// Header-Dateien
#include &lt;iostream&gt;
using namespace std;

int main()
{
	// deklarieren der Variablen
	int  breite     = 0;
	int  hoehe      = 0;
	int* pSpielfeld = NULL;
	int  i, j;

	// Eingabe
	cout &lt;&lt; &quot;Breite: &quot;;
	cin &gt;&gt; breite;
	cout &lt;&lt; &quot;Hoehe: &quot;;
	cin &gt;&gt; hoehe;

	// Eingabeauswertung
	if(breite &lt; 0 || breite &gt; 9 &amp;&amp; hoehe &lt; 0 || hoehe &gt; 9)
	{
		cout &lt;&lt; &quot;Du hast eine ungueltige Eingabe getaetigt.&quot; &lt;&lt; endl;
		cin.get(); cin.get();
		return 1;
	}
	else
	{
		// Speicher reservieren
		pSpielfeld = new int[breite][hoehe];   // Hier kommt ein Fehler

		// testen ob Speicher reserviert werden konnte
		if(pSpielfeld)
		{
			// Spielfeld durchlaufen
			for(i = 0; i &lt; hoehe; i++)
			{
				for(j = 0; j &lt; breite; j++)
					pSpielfeld[j][i] = 0;   // Hier kommt noch einer
				cout &lt;&lt; endl;
			}

			// Spielfeld ausgeben
			for(i = 0; i &lt; hoehe; i++)
			{
				for(j = 0; j &lt; breite; j++)
					cout &lt;&lt; pSpielfeld[j][i] &lt;&lt; &quot; &quot;;   // und weil es so schön ist, noch einer
				cout &lt;&lt; endl;
			}

			// Speicher wieder freigeben
			delete[] pSpielfeld;
		}
	}

	cin.get(); cin.get();
	return 0;
}
</code></pre>
<p>Ich hoffe man kann erstmal erkennen, was ich machen möchte. Ich möchte halt ein zweidimensionales Array erzeugen, indem in den Feldern eine 0 steht. Die Breite und die Höhe des Feldes soll vom Anwender eingestellt werden können. Wenn ich den oben genannten Quellcode kompilieren, dann bekomme ich folgende Fehlermeldungen:</p>
<pre><code>--------------------Konfiguration: Test - Win32 Debug--------------------
Kompilierung läuft...
dynArray.cpp
W:\test\dynArray.cpp(29) : error C2540: Kein konstanter Ausdruck als Feldgrenze
W:\test\dynArray.cpp(29) : error C2440: '=' : 'int (*)[1]' kann nicht in 'int *' konvertiert werden
        Die Typen, auf die verwiesen wird, sind nicht verwandt; die Konvertierung erfordert einen reinterpret_cast-Operator oder eine Typumwandlung im C- oder Funktionsformat
W:\test\dynArray.cpp(38) : error C2109: Index benoetigt ein Feld oder einen Zeigertyp
W:\test\dynArray.cpp(38) : error C2106: '=' : Linker Operand muss ein L-Wert sein
W:\test\dynArray.cpp(46) : error C2109: Index benoetigt ein Feld oder einen Zeigertyp
Fehler beim Ausführen von cl.exe.

Test.exe - 5 Fehler, 0 Warnung(en)
</code></pre>
<p>Laut einem Buch, welches ich mir gekauft habe, müssten die Indizes in den eckigen Klammern nun auch flexibel sein können, also können eingegeben werden und müssen nicht mehr konstant sein. Könnt ihr mir da helfen und mir sagen wo mein Fehler liegt? Wäre sehr nett von euch.</p>
<p>MfG Apo</p>
]]></description><link>https://www.c-plusplus.net/forum/post/1049718</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/1049718</guid><dc:creator><![CDATA[Apocalypse]]></dc:creator><pubDate>Tue, 02 May 2006 16:37:17 GMT</pubDate></item><item><title><![CDATA[Reply to Problem mit mehrdimensionaler Array-Größe on Tue, 02 May 2006 16:59:25 GMT]]></title><description><![CDATA[<p>Wenn du einen Mehrdimensionalen Array haben willst musst du folgendes machen:</p>
<pre><code class="language-cpp">int **xy;
*xy = new int[10];
for(int i = 0; i &lt; 10; i++)
{
    xy[i] = new int[10];
}

//irgendwas machen

for(int i = 0; i &lt; 10; i++)
{
    delete[] xy;
}

delete[] *xy;
</code></pre>
]]></description><link>https://www.c-plusplus.net/forum/post/1049744</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/1049744</guid><dc:creator><![CDATA[ich halt ;)]]></dc:creator><pubDate>Tue, 02 May 2006 16:59:25 GMT</pubDate></item><item><title><![CDATA[Reply to Problem mit mehrdimensionaler Array-Größe on Tue, 02 May 2006 17:08:11 GMT]]></title><description><![CDATA[<p>eher so</p>
<pre><code class="language-cpp">for(int i = 0; i &lt; 10; i++)
{
    delete[] xy[i];
}
</code></pre>
]]></description><link>https://www.c-plusplus.net/forum/post/1049755</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/1049755</guid><dc:creator><![CDATA[Braunstein]]></dc:creator><pubDate>Tue, 02 May 2006 17:08:11 GMT</pubDate></item><item><title><![CDATA[Reply to Problem mit mehrdimensionaler Array-Größe on Tue, 02 May 2006 18:09:33 GMT]]></title><description><![CDATA[<p>Okay..., danke, für eure schnelle Antwort. Ich werde es gleich mal ausprobieren. Werde mich dann nochmal melden, ob es geklappt hat, aber wenn ihr es sagt, dann wird das schon stimmen. <img
      src="https://www.c-plusplus.net/forum/plugins/nodebb-plugin-emoji/emoji/emoji-one/1f609.png?v=ab1pehoraso"
      class="not-responsive emoji emoji-emoji-one emoji--winking_face"
      title=";)"
      alt="😉"
    /></p>
<p>EDIT:</p>
<p>Also ich habe es nun so gemacht, wie ihr es oben beschrieben habt. Das Programm lässt sich nun kompilieren, aber nachdem ich die Werte für das Array eingetragen habe, z.B. 7 Felder für die Breite und 5 für die Höhe, dann kommen erstmal zwei Fehlermeldungen, dass die Anweisung 0x00401210 auf den Speicher 0x00000000 verweist und direkt danach kommt noch ein Fenster, und zwar das die Ausnahme &quot;unknown software exception&quot; (...) in der Anwendung an der Stelle ... aufgetreten ist.</p>
<p>Ich vermute, dass ich das Array falsch durchlaufe und an irgendwelchen Feldern eine 0 reinschreiben möchte. Könnt ihr mir sagen, ob meine Vermutung richtig ist und wie ich das Array dann am besten durchlaufe? Danke schonmal...</p>
<p>MfG Apo</p>
]]></description><link>https://www.c-plusplus.net/forum/post/1049770</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/1049770</guid><dc:creator><![CDATA[Apocalypse]]></dc:creator><pubDate>Tue, 02 May 2006 18:09:33 GMT</pubDate></item><item><title><![CDATA[Reply to Problem mit mehrdimensionaler Array-Größe on Tue, 02 May 2006 22:29:09 GMT]]></title><description><![CDATA[<p>Mach mal aus</p>
<pre><code>// Spielfeld durchlaufen
            for(i = 0; i &lt; hoehe; i++)
            {
                for(j = 0; j &lt; breite; j++)
                    pSpielfeld[j][i] = 0;   // Hier kommt noch einer
                cout &lt;&lt; endl;
            }
</code></pre>
<p>das hier:</p>
<pre><code>// Spielfeld durchlaufen
            for(j = 0; j &lt; breite; j++)
            {
                for(i = 0; i &lt; hoehe; i++)
                    pSpielfeld[j][i] = 0;   // Hier kommt noch einer
                cout &lt;&lt; endl;
            }
</code></pre>
<p>Könnte daran liegen, zumindest ist die Art, so ein 2-dimensionales Array zu durchlaufen, ungewöhnlich wie du es hast. Habe aber leider gerade nichts zum Testen zu Hand. Falls es immer noch nicht geht, poste mal nochmal deinen ganzen verbesserten Code, dann wird der Fehler evtl schon bei deiner Speicherplatzallokierung (new) liegen.</p>
]]></description><link>https://www.c-plusplus.net/forum/post/1049978</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/1049978</guid><dc:creator><![CDATA[codekasper]]></dc:creator><pubDate>Tue, 02 May 2006 22:29:09 GMT</pubDate></item><item><title><![CDATA[Reply to Problem mit mehrdimensionaler Array-Größe on Wed, 03 May 2006 02:56:25 GMT]]></title><description><![CDATA[<p>Guten Morgen Leute,</p>
<p>also ich es nun mal so gemacht, wie du es mir gesagt hast, aber es funktioniert leider immer noch nicht. Hier ist nochmal mein Quellcode:</p>
<pre><code class="language-cpp">// Header-Dateien
#include &lt;iostream&gt;
using namespace std;

int main()
{
    // deklarieren der Variablen
    int  breite     = 0;
    int  hoehe      = 0;
    int** pSpielfeld = NULL;
    int  i, j;

    // Eingabe
    cout &lt;&lt; &quot;Breite: &quot;;
    cin &gt;&gt; breite;
    cout &lt;&lt; &quot;Hoehe: &quot;;
    cin &gt;&gt; hoehe;

    // Eingabeauswertung
    if(breite &lt; 0 || breite &gt; 9 &amp;&amp; hoehe &lt; 0 || hoehe &gt; 9)
    {
        cout &lt;&lt; &quot;Du hast eine ungueltige Eingabe getaetigt.&quot; &lt;&lt; endl;
        cin.get(); cin.get();
        return 1;
    }
    else
    {
        // Speicher reservieren
        *pSpielfeld = new int[breite];
		for(i = 0; i &lt; hoehe; i++)
			pSpielfeld[i] = new int[10];

        // testen ob Speicher reserviert werden konnte
        if(pSpielfeld)
        {
            // Spielfeld durchlaufen
            for(j = 0; j &lt; breite; j++)
            {
                for(i = 0; i &lt; hoehe; i++)
                    pSpielfeld[j][i] = 0;
                cout &lt;&lt; endl;
            }

            // Spielfeld ausgeben
            for(j = 0; j &lt; breite; j++)
            {
                for(i = 0; i &lt; hoehe; i++)
                    cout &lt;&lt; pSpielfeld[j][i] &lt;&lt; &quot; &quot;;
                cout &lt;&lt; endl;
            }

            // Speicher wieder freigeben
			for(i = 0; i &lt; hoehe; i++)
				delete[] pSpielfeld[i];

            delete[] *pSpielfeld;
        }
    }

    cin.get(); cin.get();
    return 0;
}
</code></pre>
<p>Ich hoffe das ihr versteht, was ich mit dem Programm bezwecken möchte. Danke schonmal...</p>
<p>MfG Apo</p>
]]></description><link>https://www.c-plusplus.net/forum/post/1049987</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/1049987</guid><dc:creator><![CDATA[Apocalypse]]></dc:creator><pubDate>Wed, 03 May 2006 02:56:25 GMT</pubDate></item><item><title><![CDATA[Reply to Problem mit mehrdimensionaler Array-Größe on Wed, 03 May 2006 05:39:52 GMT]]></title><description><![CDATA[<p>mach doch mal aus dem</p>
<pre><code class="language-cpp">*pSpielfeld = new int[breite];
</code></pre>
<p>ein</p>
<pre><code class="language-cpp">pSpielfeld = new int*[breite];
</code></pre>
]]></description><link>https://www.c-plusplus.net/forum/post/1050001</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/1050001</guid><dc:creator><![CDATA[ser1al]]></dc:creator><pubDate>Wed, 03 May 2006 05:39:52 GMT</pubDate></item><item><title><![CDATA[Reply to Problem mit mehrdimensionaler Array-Größe on Wed, 03 May 2006 06:02:20 GMT]]></title><description><![CDATA[<p>Und lass beim letzten delete-Befehl das * weg.</p>
]]></description><link>https://www.c-plusplus.net/forum/post/1050006</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/1050006</guid><dc:creator><![CDATA[CStoll]]></dc:creator><pubDate>Wed, 03 May 2006 06:02:20 GMT</pubDate></item><item><title><![CDATA[Reply to Problem mit mehrdimensionaler Array-Größe on Wed, 03 May 2006 06:14:14 GMT]]></title><description><![CDATA[<p>und schau dir mal in der Win32 FAQ an, wie man die Konsole &quot;besser&quot; geöffnet lässt (@cin.get(),cin.get()) <img
      src="https://www.c-plusplus.net/forum/plugins/nodebb-plugin-emoji/emoji/emoji-one/1f609.png?v=ab1pehoraso"
      class="not-responsive emoji emoji-emoji-one emoji--winking_face"
      title=";)"
      alt="😉"
    /></p>
]]></description><link>https://www.c-plusplus.net/forum/post/1050012</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/1050012</guid><dc:creator><![CDATA[ser1al]]></dc:creator><pubDate>Wed, 03 May 2006 06:14:14 GMT</pubDate></item><item><title><![CDATA[Reply to Problem mit mehrdimensionaler Array-Größe on Wed, 03 May 2006 06:36:22 GMT]]></title><description><![CDATA[<p>Hi,</p>
<p>hat zwar nix mit deinem Problem direkt zutun, aber den Else-Zweig nach dem return 1 kannste dir schenken. Entweder bricht dein Programm die Main Funktion ab, oder der Code nach dem Anweisungsblock der If-Abfrage wird ausgeführt.</p>
<p>Gruß Chris</p>
]]></description><link>https://www.c-plusplus.net/forum/post/1050025</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/1050025</guid><dc:creator><![CDATA[[[global:guest]]]]></dc:creator><pubDate>Wed, 03 May 2006 06:36:22 GMT</pubDate></item><item><title><![CDATA[Reply to Problem mit mehrdimensionaler Array-Größe on Wed, 03 May 2006 10:59:53 GMT]]></title><description><![CDATA[<p>Apocalypse schrieb:</p>
<blockquote>
<pre><code class="language-cpp">// Speicher reservieren
    *pSpielfeld = new int[breite];
    for(i = 0; i &lt; hoehe; i++)
        pSpielfeld[i] = new int[10];
</code></pre>
</blockquote>
<p>Entweder du initialisierst mit new *int[<strong>hoehe</strong>], oder du läufst die Schleife nur bis <strong>breite</strong> durch. Sonst krachts bei der Ausführung, wenn hoehe &gt; breite.</p>
]]></description><link>https://www.c-plusplus.net/forum/post/1050186</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/1050186</guid><dc:creator><![CDATA[DarthZiu]]></dc:creator><pubDate>Wed, 03 May 2006 10:59:53 GMT</pubDate></item><item><title><![CDATA[Reply to Problem mit mehrdimensionaler Array-Größe on Wed, 03 May 2006 11:29:16 GMT]]></title><description><![CDATA[<p>Hey..., danke es funktioniert nun. Es lag wirklich an den beiden Fehlern!</p>
<p>MfG Apo *freu*</p>
]]></description><link>https://www.c-plusplus.net/forum/post/1050206</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/1050206</guid><dc:creator><![CDATA[Apocalypse]]></dc:creator><pubDate>Wed, 03 May 2006 11:29:16 GMT</pubDate></item></channel></rss>