<?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[2D Arrays umbau auf dynamisch]]></title><description><![CDATA[<p>Moin<br />
Ich hab ein Programm geschrieben, das ein magisches Quadrat errechnet...</p>
<pre><code class="language-cpp">//---------------------------------------------------------------------------

#include &lt;iostream.h&gt;
#include &lt;iomanip.h&gt;
#include &lt;conio.h&gt;
#include &lt;vcl/vcl.h&gt;

//---------------------------------------------------------------------------
const int MAX = 3;
int zeile = 0, spalte = MAX % 2;
int feld [MAX][MAX];

void main()
{
      feld [zeile][spalte] = 1;

			for (int i = 1;i &lt; MAX*MAX ; i++)
			{

					if (i % 3 == 0){
						zeile += 1;
					}

					else {
						spalte += 1;
						zeile -= 1;
					}

					if (zeile &lt; 0) {
						zeile = MAX - 1;
					}
					if (spalte == MAX) {
						 spalte = 0;
					}

				feld [zeile][spalte] = i+1;
			}

			for (int z = 0;z &lt; MAX ;z++) {
				for (int s = 0;s &lt; MAX ; s++) {
					 cout &lt;&lt; setw (4) &lt;&lt; feld [z][s];
				}
	  cout &lt;&lt; endl;
			}
getch();
}
//---------------------------------------------------------------------------
</code></pre>
<p>Jetzt habe ich Probiert den Quelltext so umzuschreiben, dass die Größe des Quadrates (const int MAX) vom User festgelegt wird,<br />
Habe ich in etwa so gemacht</p>
<pre><code class="language-cpp">int **feld;          
/* Idee hatte ich aus dem Yahoobord, wo jemand nen ähnliches PRob hatte; */
feld = new int *[MAX];
for (int i = 0; i &lt; MAX; i++)
{
    feld[i] = new int [MAX];
}
</code></pre>
<p>Das problem ist, dass ich dann einen fehler bekomme, dass der speicher belegt ist,<br />
wie kann ich das sonst machen ?</p>
<p>mfg</p>
<p>CMW</p>
]]></description><link>https://www.c-plusplus.net/forum/topic/193094/2d-arrays-umbau-auf-dynamisch</link><generator>RSS for Node</generator><lastBuildDate>Sun, 27 Sep 2026 20:56:14 GMT</lastBuildDate><atom:link href="https://www.c-plusplus.net/forum/topic/193094.rss" rel="self" type="application/rss+xml"/><pubDate>Fri, 21 Sep 2007 21:01:22 GMT</pubDate><ttl>60</ttl><item><title><![CDATA[Reply to 2D Arrays umbau auf dynamisch on Fri, 21 Sep 2007 21:01:22 GMT]]></title><description><![CDATA[<p>Moin<br />
Ich hab ein Programm geschrieben, das ein magisches Quadrat errechnet...</p>
<pre><code class="language-cpp">//---------------------------------------------------------------------------

#include &lt;iostream.h&gt;
#include &lt;iomanip.h&gt;
#include &lt;conio.h&gt;
#include &lt;vcl/vcl.h&gt;

//---------------------------------------------------------------------------
const int MAX = 3;
int zeile = 0, spalte = MAX % 2;
int feld [MAX][MAX];

void main()
{
      feld [zeile][spalte] = 1;

			for (int i = 1;i &lt; MAX*MAX ; i++)
			{

					if (i % 3 == 0){
						zeile += 1;
					}

					else {
						spalte += 1;
						zeile -= 1;
					}

					if (zeile &lt; 0) {
						zeile = MAX - 1;
					}
					if (spalte == MAX) {
						 spalte = 0;
					}

				feld [zeile][spalte] = i+1;
			}

			for (int z = 0;z &lt; MAX ;z++) {
				for (int s = 0;s &lt; MAX ; s++) {
					 cout &lt;&lt; setw (4) &lt;&lt; feld [z][s];
				}
	  cout &lt;&lt; endl;
			}
getch();
}
//---------------------------------------------------------------------------
</code></pre>
<p>Jetzt habe ich Probiert den Quelltext so umzuschreiben, dass die Größe des Quadrates (const int MAX) vom User festgelegt wird,<br />
Habe ich in etwa so gemacht</p>
<pre><code class="language-cpp">int **feld;          
/* Idee hatte ich aus dem Yahoobord, wo jemand nen ähnliches PRob hatte; */
feld = new int *[MAX];
for (int i = 0; i &lt; MAX; i++)
{
    feld[i] = new int [MAX];
}
</code></pre>
<p>Das problem ist, dass ich dann einen fehler bekomme, dass der speicher belegt ist,<br />
wie kann ich das sonst machen ?</p>
<p>mfg</p>
<p>CMW</p>
]]></description><link>https://www.c-plusplus.net/forum/post/1370383</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/1370383</guid><dc:creator><![CDATA[CMW]]></dc:creator><pubDate>Fri, 21 Sep 2007 21:01:22 GMT</pubDate></item><item><title><![CDATA[Reply to 2D Arrays umbau auf dynamisch on Fri, 21 Sep 2007 21:17:56 GMT]]></title><description><![CDATA[<p>das so zu machen ist schonmal nicht schlecht, eine andere möglichkeit wäre</p>
<pre><code class="language-cpp">int* feld = new int[MAX*MAX];
</code></pre>
<p>auf feld an position x,y greift man folgendermaßen zu:</p>
<pre><code class="language-cpp">feld[x+MAX*y];
</code></pre>
<p>aber wo dein Fehler herkommt sehe ich so auf Anhieb nicht.</p>
]]></description><link>https://www.c-plusplus.net/forum/post/1370391</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/1370391</guid><dc:creator><![CDATA[Krux]]></dc:creator><pubDate>Fri, 21 Sep 2007 21:17:56 GMT</pubDate></item><item><title><![CDATA[Reply to 2D Arrays umbau auf dynamisch on Sat, 22 Sep 2007 15:17:19 GMT]]></title><description><![CDATA[<p>sooo in etwa sieht das aus</p>
<p>c++</p>
<pre><code class="language-cpp">//---------------------------------------------------------------------------

#include &lt;iostream.h&gt;
#include &lt;iomanip.h&gt;
#include &lt;conio.h&gt;
//---------------------------------------------------------------------------
int print();
int test();
int test2();
int test3();
int test4();

int MAX = 3;
int zeile = 0, spalte = MAX % 2;
int **feld;

int main()
{
	  feld = new int*[MAX];
	  feld[MAX] = new int [MAX];

	  feld [zeile][spalte] = 1;

			for (int i = 1;i &lt; MAX*MAX ; i++)
			{

					if (i % 3 == 0){
						zeile += 1;
					}

					else {
						spalte += 1;
						zeile -= 1;
					}

					if (zeile &lt; 0) {
						zeile = MAX - 1;
					}
					if (spalte == MAX) {
						 spalte = 0;
					}

				feld [zeile][spalte] = i+1;
			}
		   print();
		   test();
		   test2();
		   test3();
		   test4();

getch();
return 0;
}

int print()
{
    			for (int z = 0;z &lt; MAX ;z++) {
				for (int s = 0;s &lt; MAX ; s++) {
					 cout &lt;&lt; setw (4) &lt;&lt; feld [z][s];
				}
	  cout &lt;&lt; endl;
			} return 0;
}

int test()
{
 int summe = 0, tester = 15,x;

	for (int i = 0;i &lt; MAX ; i++) {
		for (int j = 0 ;j &lt; MAX ; j++) {
			x = feld [i][j];
			summe += x;

		if (summe == tester) {
		  cout &lt;&lt; i+1 &lt;&lt; &quot;. Zeile: Ok &quot; &lt;&lt; endl;
		}

	}
	if (summe != tester) {
	   cout &lt;&lt; &quot;Error&quot; &lt;&lt; endl; return 0;

	}
	summe = 0;
	}
   return 0;
	}
int test2()
{
		int c,summe2 = 0, tester = 15;
		for (int d = 0;d &lt; MAX ;d++ ) {
			for (int b = 0 ;b &lt; MAX ; b++) {
			c = feld [d][b];
			summe2 += c;
		if (summe2 == tester) {
		  cout &lt;&lt; d+1 &lt;&lt; &quot;. Spalte: Ok &quot; &lt;&lt; endl;
		}

	}
		if (summe2 != tester) {
	  cout &lt;&lt; &quot;Error&quot;; return 0;
	}
	summe2 = 0;
			}
return 0;
}

int test3()
{    int j, summe = 0, tester = 15;

	cout &lt;&lt; &quot;Die Diagnonale &quot;;

	for (int i = 0; i &lt; MAX; i++) {
		j = i;
		summe += feld [i][j];
		cout &lt;&lt; i+1 &lt;&lt; &quot;/&quot; &lt;&lt; j+1 &lt;&lt; &quot; , &quot;;

	}
	if (summe == tester) {
		cout &lt;&lt; &quot; entspricht dem System&quot;&lt;&lt; endl;
	}
	else cout &lt;&lt; &quot; entspricht nicht dem system&quot; &lt;&lt; endl;
  return 0;
}

int test4()
{
    int j=0, summe = 0, tester = 15;
	cout &lt;&lt; &quot;Die Diagonale &quot;;
	for (int i = MAX-1;i &gt;=0 ;i--) {
		 summe += feld [i][j];
		j++;
		cout &lt;&lt; j &lt;&lt; &quot;/&quot; &lt;&lt; i+1 &lt;&lt; &quot; , &quot;;
	}
	if (summe == tester) {
	   cout &lt;&lt; &quot; ist OK&quot;;
	}
	else cout &lt;&lt; &quot;Error&quot;;
   return 0;
}
</code></pre>
]]></description><link>https://www.c-plusplus.net/forum/post/1370697</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/1370697</guid><dc:creator><![CDATA[CMW]]></dc:creator><pubDate>Sat, 22 Sep 2007 15:17:19 GMT</pubDate></item><item><title><![CDATA[Reply to 2D Arrays umbau auf dynamisch on Sun, 23 Sep 2007 10:15:02 GMT]]></title><description><![CDATA[<p>Ehm da wir hier in C++ sind und damit du dir nicht den ganzen Speicher zerhaust:</p>
<pre><code class="language-cpp">template&lt;typename T&gt;
class dynamic_array_type2
{
public:
	dynamic_array_type2(std::size_t row, std::size_t col) : m_row(row), m_col(col)	{	m_data = new T[row * col];}
	~dynamic_array_type2(){	delete [] m_data;}

public:
	T&amp;			at(std::size_t x, std::size_t y) { if (y &gt;= m_row || x &gt;= m_col) throw std::out_of_range(&quot;x and/or y&quot;); return m_data[x + m_col * y]; }
	T const&amp;	at(std::size_t x, std::size_t y) const	{ if (x &gt;= m_row || y &gt;= m_col) throw std::out_of_range(&quot;x and/or y&quot;); return m_data[x + m_col * y]; }

	T&amp; operator ()(std::size_t x, std::size_t y)				{ return at(x, y);	}
	T const&amp; operator () (std::size_t x, std::size_t y) const	{ return at(x, y);	}

	std::size_t row() const { return m_row; }
	std::size_t col() const { return m_col; }
	std::size_t size() const { return m_col * m_row; }

private:
	std::size_t		m_row;
	std::size_t		m_col;
	T*	m_data;
};
</code></pre>
<p>...</p>
<pre><code class="language-cpp">template &lt;typename T&gt;
void type(std::istream&amp; in, T&amp; dest, const std::string&amp; prompt)
{
	std::cout &lt;&lt; prompt &lt; std::flush;
	while (!(in &gt;&gt; dest)) 
	{ 
		in.sync(); 
		in.clear(); 
		in.ignore(std::numeric_limits&lt;std::streamsize&gt;::max(), '\n'); 
		std::cout &lt;&lt; prompt &lt;&lt; std::flush; 
	}
	return in;
}
</code></pre>
<p>Hab dir direkt nen kleines Hilfstemplate geschrieben um Daten einzulesen ...</p>
<pre><code class="language-cpp">int main()
{
    std::size_t dimension_x, dimension_y;
    type&lt;std::size_t&gt;(std::cin, dimension_x, &quot;max. x: &quot;);
    type&lt;std::size_t&gt;(std::cin, dimension_y, &quot;max. y: &quot;);

    dynamic_array_type2&lt;int&gt; field(dimension_x, dimension_y);
    std::size_t row = 0;
    field(row, field.col() - 1) = 1;

    for (std::size_t i = 3; i &lt; field.size(); i += 3) ++row;
}
</code></pre>
<p>usw. (das ist jetzt bis zur nach der 1. for-Schleife) ...</p>
]]></description><link>https://www.c-plusplus.net/forum/post/1370961</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/1370961</guid><dc:creator><![CDATA[*D*Evil]]></dc:creator><pubDate>Sun, 23 Sep 2007 10:15:02 GMT</pubDate></item></channel></rss>