<?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[Schachfeld mit einer Verketteten Liste]]></title><description><![CDATA[<p>hallo,<br />
ich muss ein Schachfeld programmieren, die Springfigur ist (&quot;Pferdchen&quot;.<br />
Regeln: 2 Felder nach oben, rechts, links oder unten, dann 1 Feld senkrecht dazu.<br />
Ich bin noch am anfang des programms und schon stoße ich auf das erste Problem, irgendwie kann ich den String nicht initialisieren.<br />
Hier ist mein Programm:</p>
<pre><code class="language-cpp">#include &lt;iostream&gt;
#include &lt;string&gt;
using namespace std;

class Cschachfeld
{
private :
	string spalten  ;
	string reihen ;
public:
	Cschachfeld (string s  , string r) ;
	~ Cschachfeld (){cout &lt;&lt; &quot;Destruktor: &lt;Feldkoordinaten&gt;.&quot; &lt;&lt; endl;};
};
Cschachfeld :: Cschachfeld (string s  , string r) : spalten(s), reihen (r)
{
	s = {0,1,2,3,4,5,6,7};
	r = {A,B,C,D.E,F,G,H};
}
</code></pre>
<p>Weisst jemand warum ich die beiden Feld so nicht initialiesieren kann?</p>
<p>Für eure hilfe bedanke ich mich im voraus.<br />
Pava</p>
]]></description><link>https://www.c-plusplus.net/forum/topic/265076/schachfeld-mit-einer-verketteten-liste</link><generator>RSS for Node</generator><lastBuildDate>Mon, 27 Jul 2026 02:16:00 GMT</lastBuildDate><atom:link href="https://www.c-plusplus.net/forum/topic/265076.rss" rel="self" type="application/rss+xml"/><pubDate>Sat, 17 Apr 2010 17:33:40 GMT</pubDate><ttl>60</ttl><item><title><![CDATA[Reply to Schachfeld mit einer Verketteten Liste on Sat, 17 Apr 2010 17:33:40 GMT]]></title><description><![CDATA[<p>hallo,<br />
ich muss ein Schachfeld programmieren, die Springfigur ist (&quot;Pferdchen&quot;.<br />
Regeln: 2 Felder nach oben, rechts, links oder unten, dann 1 Feld senkrecht dazu.<br />
Ich bin noch am anfang des programms und schon stoße ich auf das erste Problem, irgendwie kann ich den String nicht initialisieren.<br />
Hier ist mein Programm:</p>
<pre><code class="language-cpp">#include &lt;iostream&gt;
#include &lt;string&gt;
using namespace std;

class Cschachfeld
{
private :
	string spalten  ;
	string reihen ;
public:
	Cschachfeld (string s  , string r) ;
	~ Cschachfeld (){cout &lt;&lt; &quot;Destruktor: &lt;Feldkoordinaten&gt;.&quot; &lt;&lt; endl;};
};
Cschachfeld :: Cschachfeld (string s  , string r) : spalten(s), reihen (r)
{
	s = {0,1,2,3,4,5,6,7};
	r = {A,B,C,D.E,F,G,H};
}
</code></pre>
<p>Weisst jemand warum ich die beiden Feld so nicht initialiesieren kann?</p>
<p>Für eure hilfe bedanke ich mich im voraus.<br />
Pava</p>
]]></description><link>https://www.c-plusplus.net/forum/post/1884336</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/1884336</guid><dc:creator><![CDATA[pava]]></dc:creator><pubDate>Sat, 17 Apr 2010 17:33:40 GMT</pubDate></item><item><title><![CDATA[Reply to Schachfeld mit einer Verketteten Liste on Sat, 17 Apr 2010 17:35:00 GMT]]></title><description><![CDATA[<p>Das ergibt von vorne bis hinten keinen Sinn. Was willst du da machen?</p>
]]></description><link>https://www.c-plusplus.net/forum/post/1884337</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/1884337</guid><dc:creator><![CDATA[TyRoXx]]></dc:creator><pubDate>Sat, 17 Apr 2010 17:35:00 GMT</pubDate></item><item><title><![CDATA[Reply to Schachfeld mit einer Verketteten Liste on Sat, 17 Apr 2010 17:41:14 GMT]]></title><description><![CDATA[<p>TyRoXx schrieb:</p>
<blockquote>
<p>Das ergibt von vorne bis hinten keinen Sinn. Was willst du da machen?</p>
</blockquote>
<p>oh ha, das hört sich gar nicht gut an.<br />
ich wollte erstmal die beiden felder initialisieren, und dann mit einer if oder for schleife weiter arbeiten.<br />
die aufgabe ist hier :<br />
<strong>Gehen Sie systematisch und schrittweise vor.<br />
o Erstellen Sie die Klasse „cSchachfeld“ mit 2 Attributen, die geeignet sind, um die<br />
Koordinaten des Schachfelds abzulegen.<br />
o Erstellen Sie einen Konstruktor, der die Koordinaten als Parameter entgegennimmt.<br />
o Erstellen Sie einen Destruktor, der die Ausgabe macht:<br />
„Destruktor: &lt;Feldkoordinaten&gt;“.<br />
o Bauen Sie ein Hauptprogramm, in welchem das Startobjekt der Klasse cSchachfeld<br />
mit den Startkoordinaten B 1 angelegt wird.<br />
o Bauen Sie eine Funktion springersprung(), die von Benutzer die Koordinaten einliest,<br />
an die der Springer ziehen soll.<br />
o Führen Sie in dieser Funktion eine Prüfung auf Korrektheit der Eingabe als<br />
zulässigen Springer-Sprung durch (erste Achse +/- 2, andere Achse +/- 1), beachten<br />
Sie dabei die Spielbrettgrenzen.<br />
o Die Funktion soll für einen korrekten Sprung ein neues cSchachfeld-Objekt mit den<br />
neuen Koordinaten generieren (new Operator) und an die verkettete Liste anhängen.<br />
o Rufen Sie im Hauptprogramm die Funktion springersprung() so oft auf, bis der<br />
Springer die gegenüberliegende Brettgrenze (Zielposition irgendwo in Reihe <img
      src="https://www.c-plusplus.net/forum/plugins/nodebb-plugin-emoji/emoji/emoji-one/1f60e.png?v=ab1pehoraso"
      class="not-responsive emoji emoji-emoji-one emoji--smiling_face_with_sunglasses"
      title="8)"
      alt="😎"
    /><br />
erreicht hat,<br />
o Dann wird die Sprungkette ausgegeben (alle Koordinatenpaare inklusive Startposition<br />
und Zielposition), und die verkette Liste wird aufgelöst (delete Operator).</strong></p>
]]></description><link>https://www.c-plusplus.net/forum/post/1884340</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/1884340</guid><dc:creator><![CDATA[pava]]></dc:creator><pubDate>Sat, 17 Apr 2010 17:41:14 GMT</pubDate></item><item><title><![CDATA[Reply to Schachfeld mit einer Verketteten Liste on Sat, 17 Apr 2010 18:05:17 GMT]]></title><description><![CDATA[<p>Das ist wohl so gemeint, dass die Klasse ein Feld auf dem Schachbrett darstellt. Jedes Feld soll seine Position kennen. Da sich die Felder durchnummerieren lassen und es zwei Achsen gibt, würde ich zwei Member-Variablen vom Typ <code>unsigned int</code> verwenden. Ungefähr so:</p>
<pre><code class="language-cpp">class cSchachfeld
{
public:
	unsigned int positionX;
	unsigned int positionY;

	//Konstruktor...

	//Konstanten für die max. Koordinaten
	enum
	{
		TotalWidth = 8,
		TotalHeight = 8
	};

	//für mehr Komfort
	bool fromChars(char letter, char number)
	{
		positionX = (toupper(letter) - 'A');
		positionY = (number - '1');
		return
			positionX &lt; (unsigned)TotalWidth &amp;&amp;
			positionY &lt; (unsigned)TotalHeight;
	}
};
</code></pre>
<p>Benutzung:</p>
<pre><code class="language-cpp">int main()
{
	cSchachfeld feld;
	feld.fromChars('B', '1');
}
</code></pre>
<p>Für Sprünge könnte man eine Methode der Klasse <code>cSchachfeld</code> anlegen:</p>
<pre><code class="language-cpp">bool jump(int deltaX, int deltaY)
{
	//negative Ergebnisse werden mit unsigned zu sehr hohen Werten und sind damit auch ungültig
	positionX = unsigned(int(positionX) - deltaX);
	//...
	return
		positionX &lt; (unsigned)TotalWidth &amp;&amp;
		//...
		;
}
</code></pre>
<p>Das mit der Liste klingt sehr gewagt für einen Anfänger. Vielleicht tut's auch <code>std::list</code> :</p>
<pre><code class="language-cpp">#include &lt;list&gt;
#include &lt;iostream&gt;

//...

int main()
{
	std::list&lt;cSchachfeld&gt; turns;
	cSchachfeld feld;
	feld.fromChars('B', '1');
	turns.push_back(feld);

	//...

	for (std::list&lt;cSchachfeld&gt;::iterator ii = turns.begin(); ii != turns.end(); ++ii)
	{
		std::cout &lt;&lt; *ii &lt;&lt; std::endl;
	}
}
</code></pre>
<p>Die Ausgabe kann man so machen (das definiert den Operator <code>&lt;&lt;</code> für <code>cout</code> und <code>cSchachfeld</code> ):</p>
<pre><code class="language-cpp">std::ostream &amp;operator &lt;&lt; (std::ostream &amp;os, const cSchachfeld &amp;feld)
{
	return os &lt;&lt; feld.positionX[&quot;ABCDEFGH&quot;] &lt;&lt; &quot; &quot; &lt;&lt; feld.positionY[&quot;12345678&quot;];
}
</code></pre>
]]></description><link>https://www.c-plusplus.net/forum/post/1884342</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/1884342</guid><dc:creator><![CDATA[TyRoXx]]></dc:creator><pubDate>Sat, 17 Apr 2010 18:05:17 GMT</pubDate></item><item><title><![CDATA[Reply to Schachfeld mit einer Verketteten Liste on Sat, 17 Apr 2010 18:55:07 GMT]]></title><description><![CDATA[<p>erstmal vielen dank für die Antwort, aber ich habe diesen teil von deinem Code nicht verstanden:</p>
<pre><code class="language-cpp">public:
	unsigned int positionX;
	unsigned int positionY;
</code></pre>
<p>Ich glaube man sollte zwei atribute benutzen , das bedeutet für mich</p>
<pre><code class="language-cpp">private :
	unsigned int positionX;
	unsigned int positionY;
</code></pre>
<p>also private statt public, oder ist das falsch?</p>
]]></description><link>https://www.c-plusplus.net/forum/post/1884369</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/1884369</guid><dc:creator><![CDATA[pava]]></dc:creator><pubDate>Sat, 17 Apr 2010 18:55:07 GMT</pubDate></item><item><title><![CDATA[Reply to Schachfeld mit einer Verketteten Liste on Sat, 17 Apr 2010 19:04:36 GMT]]></title><description><![CDATA[<p>Du kannst die natürlich auch <code>private</code> machen und Methoden für den Zugriff anlegen. Bei einer so einfachen Struktur können öffentliche Attribute aber auch nicht schaden.</p>
]]></description><link>https://www.c-plusplus.net/forum/post/1884371</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/1884371</guid><dc:creator><![CDATA[TyRoXx]]></dc:creator><pubDate>Sat, 17 Apr 2010 19:04:36 GMT</pubDate></item><item><title><![CDATA[Reply to Schachfeld mit einer Verketteten Liste on Sat, 17 Apr 2010 19:25:12 GMT]]></title><description><![CDATA[<p>TyRoXx schrieb:</p>
<blockquote>
<p>Du kannst die natürlich auch <code>private</code> machen und Methoden für den Zugriff anlegen. Bei einer so einfachen Struktur können öffentliche Attribute aber auch nicht schaden.</p>
</blockquote>
<p>Ich würde die lieber public deklarieren aber der Professor will die als atribute haben. atribute heisst private oder?<br />
ich verstehe es auch nicht warum man für das erste praktikum so ein Programm auswählt.</p>
]]></description><link>https://www.c-plusplus.net/forum/post/1884373</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/1884373</guid><dc:creator><![CDATA[pava]]></dc:creator><pubDate>Sat, 17 Apr 2010 19:25:12 GMT</pubDate></item><item><title><![CDATA[Reply to Schachfeld mit einer Verketteten Liste on Sat, 17 Apr 2010 19:34:22 GMT]]></title><description><![CDATA[<p>pava schrieb:</p>
<blockquote>
<p>atribute heisst private oder?</p>
</blockquote>
<p>Bei <a href="http://de.wikipedia.org/wiki/Attribut_%28Objekt%29" rel="nofollow">Wikipedia</a> steht nichts von <code>private</code> (da wird auch gar nicht auf Programmierung näher eingegangen). Also nennt man wohl alle Member-Variablen Attribute.</p>
]]></description><link>https://www.c-plusplus.net/forum/post/1884376</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/1884376</guid><dc:creator><![CDATA[TyRoXx]]></dc:creator><pubDate>Sat, 17 Apr 2010 19:34:22 GMT</pubDate></item><item><title><![CDATA[Reply to Schachfeld mit einer Verketteten Liste on Sat, 17 Apr 2010 20:02:06 GMT]]></title><description><![CDATA[<p>Danke schön jetzt bin ich einbischen schlauer geworden <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="😉"
    /><br />
Aber zwei Zeilen im Code verstehe ich immer noch nicht ganz (bin noch anfänger).</p>
<p>positionX = (toupper(letter) - 'A');<br />
und das auch:<br />
std::ostream &amp;operator &lt;&lt; (std::ostream &amp;os, const cSchachfeld &amp;feld)</p>
<p>also wenn ich usin name space std; mache dann brauche ich nicht mehr std: oder irre ich mich? übrigens ich verstehe nicht warum du os da benutzt hast.<br />
eine Frage hätte ich noch was ist toupper?</p>
]]></description><link>https://www.c-plusplus.net/forum/post/1884392</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/1884392</guid><dc:creator><![CDATA[pava]]></dc:creator><pubDate>Sat, 17 Apr 2010 20:02:06 GMT</pubDate></item><item><title><![CDATA[Reply to Schachfeld mit einer Verketteten Liste on Sat, 17 Apr 2010 20:08:31 GMT]]></title><description><![CDATA[<p>pava schrieb:</p>
<blockquote>
<p>also wenn ich usin name space std; mache dann brauche ich nicht mehr std: oder irre ich mich?</p>
</blockquote>
<p>Normalerweise gehört <code>using namespace</code> nicht in einen Header (wo normalerweise Klassendefinitionen stehen).</p>
<p>pava schrieb:</p>
<blockquote>
<p>übrigens ich verstehe nicht warum du os da benutzt hast.<br />
eine Frage hätte ich noch was ist toupper?</p>
</blockquote>
<p>Zwei Fälle für Google.<br />
-&gt; c++ operator overloading<br />
-&gt; c++ toupper</p>
]]></description><link>https://www.c-plusplus.net/forum/post/1884395</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/1884395</guid><dc:creator><![CDATA[TyRoXx]]></dc:creator><pubDate>Sat, 17 Apr 2010 20:08:31 GMT</pubDate></item></channel></rss>