<?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[Kleine Schwierigkeit mit Arrays: Palindrom ja oder nein?]]></title><description><![CDATA[<p>Guten Abend.</p>
<p>Ich bin gerade dabei das Grundlagenbuch für C++ von Gerhard Willms zu lesen.<br />
Derzeit setze ich mich mit Arrays, Zeigerarrays und Strings auseinander.</p>
<p>Ich bin nun auf die Aufgabe gestoßen ein Programm zu schreiben, das erkennt, ob eine vom Benutzer getätigte Eingabe ein sogenanntes Palindrom darstellt oder nicht (Palindrom = Wort, das vorwärts, als auch rückwärts gelesen gleich lautet. Bsp.: &quot;Elle&quot;, &quot;Otto&quot; oder &quot;123321&quot;).</p>
<p>Um das Problem zu lösen, habe ich zwei Arrays erstellt.<br />
Zunächst wird über eine Eingabeaufforderung die Eingabe im ersten Array (arr) gespeichert.<br />
Das Array (arr) kopiert dann seine Buchstaben von hinten nach vorne in das 2. Array (copy).</p>
<p>Beide Arrays werden zur Kontrolle nocheinmal ausgegeben.<br />
Dann mit einem negations-Operator verglichen und über eine if-Anweisung bestimmt, ob es sich nun um ein Palindrom handelt oder nicht. Mein Code sieht folgendermaßen aus:</p>
<pre><code>#include &lt;iostream&gt;
#include &lt;conio.h&gt;
#include &lt;string.h&gt;    //cin.getline

using namespace std;

void main() {

	char arr[10];     //Array, das Eingabe entgegennimmt.
	char copy[10];    //Rückwärts-Kopie des original Arrays.
	int i, n;

	cin.getline (arr,10);     // Eingabeaufforderung

	n = strlen(arr)-1;       /* Länge des Arrays in n speichern 
							 (-1, da letzer Buchstabe sonst nicht in copy[10]übertragen werden kann.)*/

	for (i = 0; i &lt; strlen(arr); i++) {    // i &lt; strlen(arr) (Bsp.: arr = &quot;elle&quot;) i &lt; 4  bzw.  i &lt; n
		copy[i] = arr[n--];                //Array arr wird rückwärts in copy kopiert.
		}

	for(i = 0; i &lt; strlen(arr); i++) {
		cout &lt;&lt; copy[i];                   //Array copy wird zur Kontrolle ausgegeben.
	}
	cout &lt;&lt;&quot;\n&quot;;

	for(i = 0; i &lt; strlen(arr); i++) {
		cout  &lt;&lt; arr[i];                   //Array arr wird zur Kontrolle ausgegeben.
	}

	for (i = 0; i &lt; strlen(arr); i++) {         //Vergleich der einzelnen Array-Elemente.
	if (arr[i] != copy[i]) {					//Bei Ungleichheit: Kein Palindrom. 
		cout &lt;&lt; &quot;\nKEIN Palindrom!&quot; &lt;&lt; endl;
		break;									//Schleife im Falle einer Ungleichheit verlassen.
	}	

	 /*Ich vermute hier fehlt eine &quot;else-Anweisung&quot;

	 else { 
			cout &lt;&lt; &quot;Palindrom&quot; &lt;&lt; endl;
			break;
			}

	ist nicht möglich, da Wörter wie &quot;kalk&quot; fälschlicherweise als Palindrom erkannt werden
	aufgrund der Anfangsbuchstaben von &quot;kalk&quot; und &quot;klak&quot; (k) */

	}
	getch();	
}			// Ende main
</code></pre>
<p>Mein Problem ist, dass nun eingegebene Wörter wie &quot;elle&quot; und &quot;123321&quot; als Palindrom erkannt werden, ich aber nicht weiß, wie ich dies über eine output-Anweisung über die Konsole ausgeben kann, ohne Gefahr zu laufen, dass Wörter wie &quot;kalk&quot; * ebenfalls als Parlindrom erkannt werden.</p>
<p>eine am Ende stehende else-if Anweisung wie:</p>
<pre><code>elseif (arr[i] = copy[i]) {
cout &lt;&lt; &quot;Palindrom liegt vor.&quot; &lt;&lt; endl;
break;
}
</code></pre>
<p>führt jedoch zu dem oben genannten unerwünschten Ergebnis. (siehe <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 />
Wenn mir jemand Tipps geben kann, wie ich mein Problem löse, wäre ich sehr dankbar.</p>
<p>Ich vermute, dass eine entsprechende else-if Anweisung das Problem lösen könnte. Der Fehler kann natürlich auch wo anders liegen.<br />
Vielen Dank im Voraus!!<br />
Cruxi</p>
]]></description><link>https://www.c-plusplus.net/forum/topic/292604/kleine-schwierigkeit-mit-arrays-palindrom-ja-oder-nein</link><generator>RSS for Node</generator><lastBuildDate>Sun, 16 Aug 2026 16:27:33 GMT</lastBuildDate><atom:link href="https://www.c-plusplus.net/forum/topic/292604.rss" rel="self" type="application/rss+xml"/><pubDate>Tue, 13 Sep 2011 19:35:47 GMT</pubDate><ttl>60</ttl><item><title><![CDATA[Reply to Kleine Schwierigkeit mit Arrays: Palindrom ja oder nein? on Tue, 13 Sep 2011 19:35:47 GMT]]></title><description><![CDATA[<p>Guten Abend.</p>
<p>Ich bin gerade dabei das Grundlagenbuch für C++ von Gerhard Willms zu lesen.<br />
Derzeit setze ich mich mit Arrays, Zeigerarrays und Strings auseinander.</p>
<p>Ich bin nun auf die Aufgabe gestoßen ein Programm zu schreiben, das erkennt, ob eine vom Benutzer getätigte Eingabe ein sogenanntes Palindrom darstellt oder nicht (Palindrom = Wort, das vorwärts, als auch rückwärts gelesen gleich lautet. Bsp.: &quot;Elle&quot;, &quot;Otto&quot; oder &quot;123321&quot;).</p>
<p>Um das Problem zu lösen, habe ich zwei Arrays erstellt.<br />
Zunächst wird über eine Eingabeaufforderung die Eingabe im ersten Array (arr) gespeichert.<br />
Das Array (arr) kopiert dann seine Buchstaben von hinten nach vorne in das 2. Array (copy).</p>
<p>Beide Arrays werden zur Kontrolle nocheinmal ausgegeben.<br />
Dann mit einem negations-Operator verglichen und über eine if-Anweisung bestimmt, ob es sich nun um ein Palindrom handelt oder nicht. Mein Code sieht folgendermaßen aus:</p>
<pre><code>#include &lt;iostream&gt;
#include &lt;conio.h&gt;
#include &lt;string.h&gt;    //cin.getline

using namespace std;

void main() {

	char arr[10];     //Array, das Eingabe entgegennimmt.
	char copy[10];    //Rückwärts-Kopie des original Arrays.
	int i, n;

	cin.getline (arr,10);     // Eingabeaufforderung

	n = strlen(arr)-1;       /* Länge des Arrays in n speichern 
							 (-1, da letzer Buchstabe sonst nicht in copy[10]übertragen werden kann.)*/

	for (i = 0; i &lt; strlen(arr); i++) {    // i &lt; strlen(arr) (Bsp.: arr = &quot;elle&quot;) i &lt; 4  bzw.  i &lt; n
		copy[i] = arr[n--];                //Array arr wird rückwärts in copy kopiert.
		}

	for(i = 0; i &lt; strlen(arr); i++) {
		cout &lt;&lt; copy[i];                   //Array copy wird zur Kontrolle ausgegeben.
	}
	cout &lt;&lt;&quot;\n&quot;;

	for(i = 0; i &lt; strlen(arr); i++) {
		cout  &lt;&lt; arr[i];                   //Array arr wird zur Kontrolle ausgegeben.
	}

	for (i = 0; i &lt; strlen(arr); i++) {         //Vergleich der einzelnen Array-Elemente.
	if (arr[i] != copy[i]) {					//Bei Ungleichheit: Kein Palindrom. 
		cout &lt;&lt; &quot;\nKEIN Palindrom!&quot; &lt;&lt; endl;
		break;									//Schleife im Falle einer Ungleichheit verlassen.
	}	

	 /*Ich vermute hier fehlt eine &quot;else-Anweisung&quot;

	 else { 
			cout &lt;&lt; &quot;Palindrom&quot; &lt;&lt; endl;
			break;
			}

	ist nicht möglich, da Wörter wie &quot;kalk&quot; fälschlicherweise als Palindrom erkannt werden
	aufgrund der Anfangsbuchstaben von &quot;kalk&quot; und &quot;klak&quot; (k) */

	}
	getch();	
}			// Ende main
</code></pre>
<p>Mein Problem ist, dass nun eingegebene Wörter wie &quot;elle&quot; und &quot;123321&quot; als Palindrom erkannt werden, ich aber nicht weiß, wie ich dies über eine output-Anweisung über die Konsole ausgeben kann, ohne Gefahr zu laufen, dass Wörter wie &quot;kalk&quot; * ebenfalls als Parlindrom erkannt werden.</p>
<p>eine am Ende stehende else-if Anweisung wie:</p>
<pre><code>elseif (arr[i] = copy[i]) {
cout &lt;&lt; &quot;Palindrom liegt vor.&quot; &lt;&lt; endl;
break;
}
</code></pre>
<p>führt jedoch zu dem oben genannten unerwünschten Ergebnis. (siehe <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 />
Wenn mir jemand Tipps geben kann, wie ich mein Problem löse, wäre ich sehr dankbar.</p>
<p>Ich vermute, dass eine entsprechende else-if Anweisung das Problem lösen könnte. Der Fehler kann natürlich auch wo anders liegen.<br />
Vielen Dank im Voraus!!<br />
Cruxi</p>
]]></description><link>https://www.c-plusplus.net/forum/post/2118919</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/2118919</guid><dc:creator><![CDATA[Cruxi]]></dc:creator><pubDate>Tue, 13 Sep 2011 19:35:47 GMT</pubDate></item><item><title><![CDATA[Reply to Kleine Schwierigkeit mit Arrays: Palindrom ja oder nein? on Tue, 13 Sep 2011 19:46:02 GMT]]></title><description><![CDATA[<p>Wie so auch immer du dazu genötigt wirst, cstrings zu verwenden und ohne auf dein reverse-algorithmus einzugehen :<br />
Was du suchst ist wohl strcmp(), soweit ich das richtig sehe. strcmp ( char*, char* ), damit vergleichst du deine zwei cstring komplett und nicht nur ein einzelnes char.</p>
]]></description><link>https://www.c-plusplus.net/forum/post/2118923</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/2118923</guid><dc:creator><![CDATA[cvcv]]></dc:creator><pubDate>Tue, 13 Sep 2011 19:46:02 GMT</pubDate></item><item><title><![CDATA[Reply to Kleine Schwierigkeit mit Arrays: Palindrom ja oder nein? on Tue, 13 Sep 2011 19:47:11 GMT]]></title><description><![CDATA[<p>Außerdem müsste das operator== dort sein, nicht =. = bedeutet Zuweisung, == Vergleich.</p>
]]></description><link>https://www.c-plusplus.net/forum/post/2118924</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/2118924</guid><dc:creator><![CDATA[cvcv]]></dc:creator><pubDate>Tue, 13 Sep 2011 19:47:11 GMT</pubDate></item><item><title><![CDATA[Reply to Kleine Schwierigkeit mit Arrays: Palindrom ja oder nein? on Tue, 13 Sep 2011 20:33:43 GMT]]></title><description><![CDATA[<p>Der Teil mit dem ==Operator ist mir bekannt. War auch nur ein Tippfehler.<br />
cstrings benutze ich höchstwahrscheinlich wegen mangelnder Erfahrung. Ich danke für deine Antwort.</p>
<p>string-compare (strcmp) habe ich zuvor schon versucht, gibt mir jedoch immer falsche Aussagen.</p>
<pre><code>if(strcmp(arr, copy) == 0) {
		cout &lt;&lt;&quot;\nEs handelt sich um ein Palindrom.&quot; &lt;&lt; endl;
	}
	else {
		cout &lt;&lt;&quot;\nKEIN Palindrom.&quot;&lt;&lt; endl;
	}
</code></pre>
<p>Der oben stehende Code gibt mir jedoch in allen Eingabefällen &quot;KEIN Palindrom&quot; aus.</p>
<p>Ich habe natürlich sofort nachgeforscht und entdeckt, das der Vergleichswert für<br />
strcmp(arr, copy) = -1<br />
beträgt. Das hängt vermutlich mit meinen vorhergehenden Operationen zusammen. Wenn mir jemand Anweisungen nennen könnte, die in meinem Programm falsch sind, bzw. besser geignete Anweisungen vorschlagen könnte, wäre das eine &gt;WIRKLICHE&lt; Hilfe.</p>
<p>Ich habe den Teil</p>
<pre><code>cin.getline(arr,10);
n = strlen(arr)-1;
</code></pre>
<p>überpüft und herausgefunden, dass diese Anweisungen dafür verantwortlich sind, dass für strcmp(arr, copy) eine Wert ungleich 0 erscheint.</p>
<p>Ich habe schon einiges versucht, doch eine Lösung habe ich noch nicht gefunden.</p>
]]></description><link>https://www.c-plusplus.net/forum/post/2118943</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/2118943</guid><dc:creator><![CDATA[Cruxi]]></dc:creator><pubDate>Tue, 13 Sep 2011 20:33:43 GMT</pubDate></item><item><title><![CDATA[Reply to Kleine Schwierigkeit mit Arrays: Palindrom ja oder nein? on Tue, 13 Sep 2011 21:14:52 GMT]]></title><description><![CDATA[<p>Cruxi schrieb:</p>
<blockquote>
<p>Der Teil mit dem ==Operator ist mir bekannt. War auch nur ein Tippfehler.<br />
cstrings benutze ich höchstwahrscheinlich wegen mangelnder Erfahrung. Ich danke für deine Antwort.</p>
</blockquote>
<p>Wenn das Buch void main, string.h &amp; Co. lehrt, dann wohl eher schlechtes Buch. Wenn es das Buch von 1999 ist, dann kann das da dran liegen, dass der erste offizielle C++-Standard von 1998 ist und das Buch sich noch auf dem Stand der &quot;wilden Neunziger&quot; ist.</p>
<p>Hier ist ein (ungetesteter) Palindromcode, wie ihn ein heutiger Anfänger nach etwas Nachdenken und Ausfeilen schreiben könnte:</p>
<pre><code class="language-cpp">#include &lt;iostream&gt;
#include &lt;string&gt;

using namespace std;

bool ist_palindrom(const string &amp;wort)
{
 for(int i = 0; i &lt; wort.size() / 2; ++i)   // Für alle Buchstaben bis zur Mitte
  if(wort[i] != wort[wort.size() - 1 - i])  // Gucken ob der Buchstabe seinem Gegenüber entspricht (letzter Buchstabe in wort ist wort[wort.size() - 1] )
   return false;                            // Falls nein -&gt; Kein Palindrom
 return true;                               // Falls Schleife durchgelaufen ist -&gt; Palindrom
}

int main()
{
  cout &lt;&lt; &quot;Wort eingeben: &quot;;
  string wort;
  cin &gt;&gt; wort;

  if(ist_palindrom(wort))
   cout &lt;&lt; wort &lt;&lt; &quot; ist ein Palindrom\n&quot;;
  else
   cout &lt;&lt; wort &lt;&lt; &quot;ist kein Palindrom\n&quot;;
}
</code></pre>
<p>Je nach Kenntnisstand eventuell ohne Palindromprüfungsfunktion, sondern mitten im Programm. Funktionen kommen bestimmt bald im Buch, aber ich empfehle dir, zu einem anderen Buch zu greifen. Guck mal in den FAQ.</p>
]]></description><link>https://www.c-plusplus.net/forum/post/2118950</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/2118950</guid><dc:creator><![CDATA[SeppJ]]></dc:creator><pubDate>Tue, 13 Sep 2011 21:14:52 GMT</pubDate></item><item><title><![CDATA[Reply to Kleine Schwierigkeit mit Arrays: Palindrom ja oder nein? on Tue, 13 Sep 2011 21:22:23 GMT]]></title><description><![CDATA[<pre><code class="language-cpp">#include &lt;iostream&gt;
#include &lt;string&gt;
#include &lt;algorithm&gt;

int main()
{
        std::string word;
        while(std::cin &gt;&gt; word)
                std::cout &lt;&lt; word &lt;&lt; &quot; ist &quot; &lt;&lt; (std::equal(word.begin(), word.end(), word.rbegin()) ? &quot;&quot; : &quot;k&quot;) &lt;&lt; &quot;ein Palindrom.\n&quot;;
}
</code></pre>
<p><a href="http://ideone.com/SoREg" rel="nofollow">http://ideone.com/SoREg</a><br />
<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/2118956</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/2118956</guid><dc:creator><![CDATA[314159265358979]]></dc:creator><pubDate>Tue, 13 Sep 2011 21:22:23 GMT</pubDate></item><item><title><![CDATA[Reply to Kleine Schwierigkeit mit Arrays: Palindrom ja oder nein? on Tue, 13 Sep 2011 21:41:45 GMT]]></title><description><![CDATA[<p>?: doch nicht.</p>
<pre><code class="language-cpp">std::cout &lt;&lt; word &lt;&lt; &quot; ist &quot; &lt;&lt; std::equal(word.begin(), word.end(), word.rbegin()) + &quot;kein Palindrom.\n&quot;;
</code></pre>
<p><a href="http://ideone.com/5n5T3" rel="nofollow">http://ideone.com/5n5T3</a></p>
]]></description><link>https://www.c-plusplus.net/forum/post/2118963</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/2118963</guid><dc:creator><![CDATA[volkard]]></dc:creator><pubDate>Tue, 13 Sep 2011 21:41:45 GMT</pubDate></item><item><title><![CDATA[Reply to Kleine Schwierigkeit mit Arrays: Palindrom ja oder nein? on Tue, 13 Sep 2011 21:56:27 GMT]]></title><description><![CDATA[<p>Ups <img
      src="https://www.c-plusplus.net/forum/plugins/nodebb-plugin-emoji/emoji/emoji-one/1f603.png?v=ab1pehoraso"
      class="not-responsive emoji emoji-emoji-one emoji--grinning_face_with_big_eyes"
      title=":D"
      alt="😃"
    /></p>
]]></description><link>https://www.c-plusplus.net/forum/post/2118965</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/2118965</guid><dc:creator><![CDATA[314159265358979]]></dc:creator><pubDate>Tue, 13 Sep 2011 21:56:27 GMT</pubDate></item><item><title><![CDATA[Reply to Kleine Schwierigkeit mit Arrays: Palindrom ja oder nein? on Tue, 13 Sep 2011 22:08:21 GMT]]></title><description><![CDATA[<p>volkard schrieb:</p>
<blockquote>
<pre><code class="language-cpp">std::cout &lt;&lt; word &lt;&lt; &quot; ist &quot; &lt;&lt; std::equal(word.begin(), word.end(), word.rbegin()) + &quot;kein Palindrom.\n&quot;;
</code></pre>
</blockquote>
<p>*Den Trick in meine Obfuscation-Toolbox aufnehm*</p>
<p>Und wer erklärt das dem Threadersteller? <img
      src="https://www.c-plusplus.net/forum/plugins/nodebb-plugin-emoji/emoji/emoji-one/1f642.png?v=ab1pehoraso"
      class="not-responsive emoji emoji-emoji-one emoji--slightly_smiling_face"
      title=":)"
      alt="🙂"
    /></p>
]]></description><link>https://www.c-plusplus.net/forum/post/2118968</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/2118968</guid><dc:creator><![CDATA[SeppJ]]></dc:creator><pubDate>Tue, 13 Sep 2011 22:08:21 GMT</pubDate></item><item><title><![CDATA[Reply to Kleine Schwierigkeit mit Arrays: Palindrom ja oder nein? on Tue, 13 Sep 2011 22:46:21 GMT]]></title><description><![CDATA[<p>Vielen Dank! Genau nach solch einer Alternative habe ich gesucht.<br />
Viel muss nicht mehr erklärt werden.</p>
<p>Ich setze mich selbst mit euren Lösungsvorschlägen auseinander.</p>
<p>@ SeppJ deinen Code kann ich gut nachvollziehen.<br />
Mein Problem war bloß, dass ich mich zuvor nur geringfügig mit dem Datentyp bool auseinandergesetzt habe. Vielen Dank! <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>@ 314159265358979 und volkard<br />
Eure Lösung ist natürlich eie sehr angenehme und vorallem bequeme. Gefällt mir auch sehr. Danke.</p>
<p>Eine weitere Frage bleibt mir doch noch. Da die Aufgaben, die mein Buch hergibt auf die jeweiligen Kapitel aufbaut, wurde hier vermutlich von mir erwartet, die Überprüfung eines Palindroms mit Hilfe von Arrays durchzuführen.</p>
<p>Gäbe es da auch eine Lösung? (Mir ist klar, dass diese Lösung sehr viel mehr Aufwand beschaffen kann.)<br />
Aber wenn es einen Weg gibt selbiges Problem auch mit Arrays zu lösen, dann möchte ich das ausprobieren.</p>
<p>!Lösungsansätze! wären sehr hilfreich. Komplette Codes sind für Übungen weniger effektiv.</p>
<p>Danke für eure Hilfe.</p>
]]></description><link>https://www.c-plusplus.net/forum/post/2118987</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/2118987</guid><dc:creator><![CDATA[Cruxi]]></dc:creator><pubDate>Tue, 13 Sep 2011 22:46:21 GMT</pubDate></item><item><title><![CDATA[Reply to Kleine Schwierigkeit mit Arrays: Palindrom ja oder nein? on Tue, 13 Sep 2011 23:13:10 GMT]]></title><description><![CDATA[<p>Du könntest einen std::reverse_iterator verwenden, der die Richtung eines beliebigen (mindestens Bidi, aber hier hast du sowieso RA) Iterators umdreht. Dann kannst du std::equal auch wieder verwenden <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/2118989</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/2118989</guid><dc:creator><![CDATA[314159265358979]]></dc:creator><pubDate>Tue, 13 Sep 2011 23:13:10 GMT</pubDate></item><item><title><![CDATA[Reply to Kleine Schwierigkeit mit Arrays: Palindrom ja oder nein? on Wed, 14 Sep 2011 00:12:46 GMT]]></title><description><![CDATA[<p>Wenn mich grad nicht alles täuscht, sollte</p>
<pre><code class="language-cpp">std::equal(word.begin(), word.begin() + word.size() / 2, word.rbegin())
</code></pre>
<p>ausreichen; sonst prüft man im Erfolgsfall quasi doppelt.</p>
<p>Cruxi schrieb:</p>
<blockquote>
<p>!Lösungsansätze! wären sehr hilfreich. Komplette Codes sind für Übungen weniger effektiv.</p>
</blockquote>
<p>Versuch doch als Übung mal, das rekursiv umzusetzen. Eine Zeichenfolge ist ein Palindrom, wenn das erste und letzte Zeichen übereinstimmen und der Teil dazwischen ein Palindrom ist.</p>
]]></description><link>https://www.c-plusplus.net/forum/post/2118992</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/2118992</guid><dc:creator><![CDATA[seldon]]></dc:creator><pubDate>Wed, 14 Sep 2011 00:12:46 GMT</pubDate></item><item><title><![CDATA[Reply to Kleine Schwierigkeit mit Arrays: Palindrom ja oder nein? on Wed, 14 Sep 2011 01:08:29 GMT]]></title><description><![CDATA[<p>seldon schrieb:</p>
<blockquote>
<p>Wenn mich grad nicht alles täuscht, sollte</p>
<pre><code class="language-cpp">std::equal(word.begin(), word.begin() + word.size() / 2, word.rbegin())
</code></pre>
<p>ausreichen; sonst prüft man im Erfolgsfall quasi doppelt.</p>
</blockquote>
<p>Ist natürlich richtig, an sowas hab ich gar nicht gedacht, als ich mich bemüht habe, möglichst C++-ischen Code zu schreiben <img
      src="https://www.c-plusplus.net/forum/plugins/nodebb-plugin-emoji/emoji/emoji-one/1f642.png?v=ab1pehoraso"
      class="not-responsive emoji emoji-emoji-one emoji--slightly_smiling_face"
      title=":)"
      alt="🙂"
    /></p>
]]></description><link>https://www.c-plusplus.net/forum/post/2118996</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/2118996</guid><dc:creator><![CDATA[314159265358979]]></dc:creator><pubDate>Wed, 14 Sep 2011 01:08:29 GMT</pubDate></item><item><title><![CDATA[Reply to Kleine Schwierigkeit mit Arrays: Palindrom ja oder nein? on Wed, 14 Sep 2011 16:15:58 GMT]]></title><description><![CDATA[<p>Ich habe mich noch mal mit der Aufgabe beschäfitigt.<br />
Mir ist die Idee gekommen, dass man hier auch Pointer zur Hilfe nehmen kann.</p>
<p>-Zunächst wird ein String eingelesen.<br />
-Dieser wird im Array (arr) gespeichert.</p>
<p>-Mit Hilfe eines Pointers vergleiche ich dann, ob:<br />
-&gt; das 1. und letzte Element des Wortes gleich sind<br />
-&gt; das 2. und vorletzte Element gleich sind</p>
<p>-Sind die Bedingungen erfüllt, liegt ein Palindrom vor. Andernfalls nicht.</p>
<pre><code>#include &lt;iostream&gt;
#include &lt;conio.h&gt;
#include &lt;string&gt;

using namespace std;

void main() 
{

	char arr[30];
	int i, n;
	char *p = arr;

	cout &lt;&lt; &quot;Deine Eingabe: &quot;;
	cin.getline(arr, 30);

	if (arr[0] == *(p+strlen(arr)-1) &amp;&amp; arr[1] == *(p+strlen(arr)-2) ) {
		cout &lt;&lt; &quot;\n&quot; &lt;&lt; arr &lt;&lt; &quot; ist ein Palindrom!&quot; &lt;&lt; endl;	
	}

	else {
		cout &lt;&lt; &quot;\n&quot; &lt;&lt; arr &lt;&lt; &quot; ist KEIN Palindrom.&quot; &lt;&lt; endl;	
	}

	getch();
}
</code></pre>
<p>Für mich ist die Aufgabe gelöst.<br />
Ich danke allen, die hier Tipps und Vorschläge gepostet haben! <img
      src="https://www.c-plusplus.net/forum/plugins/nodebb-plugin-emoji/emoji/emoji-one/1f642.png?v=ab1pehoraso"
      class="not-responsive emoji emoji-emoji-one emoji--slightly_smiling_face"
      title=":)"
      alt="🙂"
    /></p>
<p>PS: Ich weiß, dass mein Code umständlicher ist. Ziel war es aber anhand des Wissens, dass mir das Buch bisher lieferte eine Lösung zu finden.</p>
<p>MfG<br />
Cruxi</p>
]]></description><link>https://www.c-plusplus.net/forum/post/2119372</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/2119372</guid><dc:creator><![CDATA[Cruxi]]></dc:creator><pubDate>Wed, 14 Sep 2011 16:15:58 GMT</pubDate></item><item><title><![CDATA[Reply to Kleine Schwierigkeit mit Arrays: Palindrom ja oder nein? on Wed, 14 Sep 2011 17:04:37 GMT]]></title><description><![CDATA[<p>Deine Prüfung ist aber falsch, denn du musst alle Buchstaben vergleichen, bis du bei der Hälfte bist, wie seldon erwähnt hat. Dazu benötigst du eine Schleife.<br />
void main() ist ebenfalls falsch, es muss int main() heißen. Und getch() ist auch nicht gerade toll, nimm lieber std::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/2119400</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/2119400</guid><dc:creator><![CDATA[314159265358979]]></dc:creator><pubDate>Wed, 14 Sep 2011 17:04:37 GMT</pubDate></item><item><title><![CDATA[Reply to Kleine Schwierigkeit mit Arrays: Palindrom ja oder nein? on Wed, 14 Sep 2011 18:59:13 GMT]]></title><description><![CDATA[<p>Du hast Recht.</p>
<p>Danke für den Hinweis. Ich werde versuchen eine Lösung zu finden.<br />
Ohne Reverse-Iteratoren scheint's ziemlich kompliziert zu sein.</p>
]]></description><link>https://www.c-plusplus.net/forum/post/2119449</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/2119449</guid><dc:creator><![CDATA[Cruxi]]></dc:creator><pubDate>Wed, 14 Sep 2011 18:59:13 GMT</pubDate></item><item><title><![CDATA[Reply to Kleine Schwierigkeit mit Arrays: Palindrom ja oder nein? on Wed, 14 Sep 2011 22:54:15 GMT]]></title><description><![CDATA[<p>Cruxi schrieb:</p>
<blockquote>
<p>Du hast Recht.</p>
<p>Danke für den Hinweis. Ich werde versuchen eine Lösung zu finden.<br />
Ohne Reverse-Iteratoren scheint's ziemlich kompliziert zu sein.</p>
</blockquote>
<p>Lass dich dafür mal von meinem Code inspirieren. Das gibt dir praktisch alles vor, was du wissen musst, da der Algorithmus auf Strings wie auf Arrays funktioniert.</p>
<p>Außerdem würde ich ganz dringend das strlen vor die Schleife ziehen, denn strlen ist, im Gegensatz zu string::size(), eine sehr teure Funktion und die Länge ändert sich hier nicht.</p>
]]></description><link>https://www.c-plusplus.net/forum/post/2119520</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/2119520</guid><dc:creator><![CDATA[SeppJ]]></dc:creator><pubDate>Wed, 14 Sep 2011 22:54:15 GMT</pubDate></item><item><title><![CDATA[Reply to Kleine Schwierigkeit mit Arrays: Palindrom ja oder nein? on Wed, 14 Sep 2011 23:37:19 GMT]]></title><description><![CDATA[<pre><code>Für mich ist die Aufgabe gelöst.
</code></pre>
<p>Für mich nicht.</p>
<p>Ich empfehle bei allen einfachen algorithmischen Problemen, daß man es mit den Fingern plant. Außer, man ist schon so weit, daß man es im Kopf kann.</p>
<p>Hier heißt das, daß man sich 20 Bit besorgt und trinkt. Es entstehen 20 Kronkorken. Die beschriftet man auf der weichen Innenseite mittels eines Kugelschreibers mit Buchstaben. Eine Auswahl davon legt man in einer Reihe vor sich als zu prüfenden String.</p>
<p>Wie prüft man diesen String? Wie prüft man ihn als Mensch? Wie prüft man ihn als Mensch, wenn man sich vorstellt, daß man es mit einem so großen String zu tun hat, daß man ihn nicht direkt überschauen kann. Kurzum, wenn man so blöd ist, wie ein Computer?</p>
<p>Man legt den linken Zeigefinder vor den ersten Buchstaben und den rechten Zeigefinger vor den letzten Buchstaben.<br />
Schleife solange die Zeigefeiner nicht zusammen sind,<br />
- schaut man, ob die beiden gezeigten Buchstaben gleich sind.<br />
- Wenn nein, war es kein Palindrom.<br />
- Wenn ja, rückt man die Finger um eine Position zusammen und macht mit der Schleife weiter.<br />
Wenn die Schleife aughört, weil die Zeigefinger sich berühren, war es ein Palindrom.</p>
<p>Das führt zu zum Beispiel folgendem Code (das meiste geklaut von SeppJ):</p>
<pre><code class="language-cpp">bool ist_palindrom(const string &amp;wort)
{
 int links=0;
 int rechts=wort.size()-1;
 while(links&lt;rechts)
 {
  if(wort[links]!=wort[rechts])
   return false;
  ++links;
  --rechts;
 }
 return true;
}
</code></pre>
<p>Oft entstehen damit saugeile Algorithmen. Welche, die offensichtlich endschnell und sehr einfach sind. Bei einfacheren Problemen nehme ich manchmal die Zifferntasten von ^ bis 9 und stelle sie mir als Array vor, lege die Finger drunter, und operiere im Geiste rum.</p>
<p>Und dann klappt es bald und ich freue ich mich wie ein Schneekönig.</p>
]]></description><link>https://www.c-plusplus.net/forum/post/2119525</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/2119525</guid><dc:creator><![CDATA[volkard]]></dc:creator><pubDate>Wed, 14 Sep 2011 23:37:19 GMT</pubDate></item><item><title><![CDATA[Reply to Kleine Schwierigkeit mit Arrays: Palindrom ja oder nein? on Wed, 14 Sep 2011 23:45:45 GMT]]></title><description><![CDATA[<p>314159265358979 schrieb:</p>
<blockquote>
<p>Ist natürlich richtig, an sowas hab ich gar nicht gedacht, als ich mich bemüht habe, möglichst C++-ischen Code zu schreiben <img
      src="https://www.c-plusplus.net/forum/plugins/nodebb-plugin-emoji/emoji/emoji-one/1f642.png?v=ab1pehoraso"
      class="not-responsive emoji emoji-emoji-one emoji--slightly_smiling_face"
      title=":)"
      alt="🙂"
    /></p>
</blockquote>
<p>Wie ein Reh vor dem Scheinwerfer. <img
      src="https://www.c-plusplus.net/forum/plugins/nodebb-plugin-emoji/emoji/emoji-one/1f576.png?v=ab1pehoraso"
      class="not-responsive emoji emoji-emoji-one emoji--sunglasses"
      title=":sunglasses:"
      alt="🕶"
    /><br />
Man muß stets die Implemetierungssprache im Auge behalten, damit es super wird. Aber superer als super muß es nicht werden.</p>
]]></description><link>https://www.c-plusplus.net/forum/post/2119528</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/2119528</guid><dc:creator><![CDATA[volkard]]></dc:creator><pubDate>Wed, 14 Sep 2011 23:45:45 GMT</pubDate></item><item><title><![CDATA[Reply to Kleine Schwierigkeit mit Arrays: Palindrom ja oder nein? on Thu, 15 Sep 2011 01:29:47 GMT]]></title><description><![CDATA[<p>Um mal den Trick von volkard zu klauen:</p>
<pre><code class="language-cpp">#include &lt;iostream&gt;
#include &lt;algorithm&gt;
#include &lt;iterator&gt;
#include &lt;cstring&gt;

int main()
{
        const int n = 42;
        char str[n];

        typedef std::reverse_iterator&lt;const char*&gt; cr_iter;

        while(std::cin.getline(str, n))
        {
                const int length = std::strlen(str);
                std::cout &lt;&lt; str &lt;&lt; &quot; ist &quot; &lt;&lt; std::equal(str, str + length, cr_iter(str + length)) + &quot;kein Palindrom.\n&quot;;
        }
}
</code></pre>
<p><a href="http://www.ideone.com/hQW5y" rel="nofollow">http://www.ideone.com/hQW5y</a><br />
<img
      src="https://www.c-plusplus.net/forum/plugins/nodebb-plugin-emoji/emoji/emoji-one/1f921.png?v=ab1pehoraso"
      class="not-responsive emoji emoji-emoji-one emoji--clown_face"
      title=":clown:"
      alt="🤡"
    /></p>
]]></description><link>https://www.c-plusplus.net/forum/post/2119535</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/2119535</guid><dc:creator><![CDATA[314159265358979]]></dc:creator><pubDate>Thu, 15 Sep 2011 01:29:47 GMT</pubDate></item><item><title><![CDATA[Reply to Kleine Schwierigkeit mit Arrays: Palindrom ja oder nein? on Thu, 15 Sep 2011 01:39:39 GMT]]></title><description><![CDATA[<p>314159265358979 schrieb:</p>
<blockquote>
<p>Um mal den Trick von volkard zu klauen:</p>
<pre><code class="language-cpp">std::cout &lt;&lt; str &lt;&lt; &quot; ist &quot; &lt;&lt; std::equal(str, str + length, cr_iter(str + length)) + &quot;kein Palindrom.\n&quot;;
</code></pre>
</blockquote>
<p>Was war daran besser als das schon gesehene</p>
<blockquote>
<pre><code class="language-cpp">std::cout &lt;&lt; word &lt;&lt; &quot; ist &quot; &lt;&lt; std::equal(word.begin(), word.end(), word.rbegin()) + &quot;kein Palindrom.\n&quot;;
</code></pre>
</blockquote>
<p>?<br />
Mir fällt nur eine weitere Definition cr_iter auf, daß ich, um den Code zu verstehen, an mehr Ecken zugleich lesen muß. Und daß die Zeilen zufällig genau gleich viele Zeichen haben.</p>
]]></description><link>https://www.c-plusplus.net/forum/post/2119537</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/2119537</guid><dc:creator><![CDATA[volkard]]></dc:creator><pubDate>Thu, 15 Sep 2011 01:39:39 GMT</pubDate></item><item><title><![CDATA[Reply to Kleine Schwierigkeit mit Arrays: Palindrom ja oder nein? on Thu, 15 Sep 2011 01:40:13 GMT]]></title><description><![CDATA[<p>Er wollte es doch mit einem Array haben. Ich dachte mir, mit der Definition kann er es besser lesen. Ich hätte das typedef ansonsten auch weggelassen.</p>
]]></description><link>https://www.c-plusplus.net/forum/post/2119538</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/2119538</guid><dc:creator><![CDATA[314159265358979]]></dc:creator><pubDate>Thu, 15 Sep 2011 01:40:13 GMT</pubDate></item><item><title><![CDATA[Reply to Kleine Schwierigkeit mit Arrays: Palindrom ja oder nein? on Thu, 15 Sep 2011 01:46:56 GMT]]></title><description><![CDATA[<p>314159265358979 schrieb:</p>
<blockquote>
<p>Er wollte es doch mit einem Array haben. Ich dachte mir, mit der Definition kann er es besser lesen. Ich hätte das typedef ansonsten auch weggelassen.</p>
</blockquote>
<p>Achso. Jaklar. Jetzt ist es ein Array. Das hatte ich glatt übersehen.</p>
]]></description><link>https://www.c-plusplus.net/forum/post/2119539</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/2119539</guid><dc:creator><![CDATA[volkard]]></dc:creator><pubDate>Thu, 15 Sep 2011 01:46:56 GMT</pubDate></item><item><title><![CDATA[Reply to Kleine Schwierigkeit mit Arrays: Palindrom ja oder nein? on Thu, 15 Sep 2011 01:49:05 GMT]]></title><description><![CDATA[<p>Ich möchte was von Deinem Stoff haben. Meine Adresse haste ja. Weitere Geschäfte per Mail.</p>
]]></description><link>https://www.c-plusplus.net/forum/post/2119540</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/2119540</guid><dc:creator><![CDATA[volkard]]></dc:creator><pubDate>Thu, 15 Sep 2011 01:49:05 GMT</pubDate></item><item><title><![CDATA[Reply to Kleine Schwierigkeit mit Arrays: Palindrom ja oder nein? on Thu, 15 Sep 2011 01:57:07 GMT]]></title><description><![CDATA[<p>Wie bitte? <img
      src="https://www.c-plusplus.net/forum/plugins/nodebb-plugin-emoji/emoji/emoji-one/1f603.png?v=ab1pehoraso"
      class="not-responsive emoji emoji-emoji-one emoji--grinning_face_with_big_eyes"
      title=":D"
      alt="😃"
    /></p>
]]></description><link>https://www.c-plusplus.net/forum/post/2119541</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/2119541</guid><dc:creator><![CDATA[314159265358979]]></dc:creator><pubDate>Thu, 15 Sep 2011 01:57:07 GMT</pubDate></item><item><title><![CDATA[Reply to Kleine Schwierigkeit mit Arrays: Palindrom ja oder nein? on Thu, 15 Sep 2011 07:15:30 GMT]]></title><description><![CDATA[<p>volkard schrieb:</p>
<blockquote>
<p>?: doch nicht.</p>
<pre><code class="language-cpp">std::cout &lt;&lt; word &lt;&lt; &quot; ist &quot; &lt;&lt; std::equal(word.begin(), word.end(), word.rbegin()) + &quot;kein Palindrom.\n&quot;;
</code></pre>
<p><a href="http://ideone.com/5n5T3" rel="nofollow">http://ideone.com/5n5T3</a></p>
</blockquote>
<p>Ich hätt lieber den Stoff von dem hier..<br />
Meine Fresse hat das gedauert bis ich es gepeilt hab.</p>
]]></description><link>https://www.c-plusplus.net/forum/post/2119562</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/2119562</guid><dc:creator><![CDATA[brotbernd]]></dc:creator><pubDate>Thu, 15 Sep 2011 07:15:30 GMT</pubDate></item></channel></rss>