<?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[Sortieren von Zeichen]]></title><description><![CDATA[<p>Die Aufgabe lautet:</p>
<blockquote>
<p>a) Erstellen Sie eine Funktion mit dem Namen sortstring, die einen string quelle als Parameter hat. Mit Hilfe von new soll diese Funktion einen String ziel dynamisch erzeugen, der alle Zei-chen von quelle, aber jetzt in sortierter Reihenfolge (entsprechend dem ASCII-Code) enthält. Ist ein Zeichen mehrfach im Quellstring gewesen, so soll es dennoch nur einmal im Zielstring auf-treten. Schließlich wird (mit dem return-Befehl) ein Zeiger auf den neuen String übergeben.<br />
b) Schreiben Sie dazu eine kurze main-Funktion, in dem sortstring eingesetzt und in dem der da-mit erzeugte String (über einen Zeiger) auf den Bildschirm ausgegeben wird.<br />
Ein Beispielablauf des Programms könnte die folgenden Bildschirmausgabe erzeugen:<br />
Bitte Quelltext: schule<br />
Sortierte Ausgabe: cehlsu<br />
Hinweis: Richten Sie in der Funktion sortstring ein integer-Feld mit 256 Elementen zum Zählen ein.</p>
</blockquote>
<p>Ich hab die aufgabe jetzt soweit gelöst, mir misslingt nur die Übergabe von dem Ziel pointer.(also von sortstring zu main)<br />
Außerdem bezweifel ich ein wenig das dies guter Programierstil ist da ich mal gelesen habe :</p>
<blockquote>
<p>Returne nie eine Referenz oder einen Zeiger auf eine lokale Variable.</p>
</blockquote>
<p>aber gut wenns mein Prof so will, gibt es bessere Varianten hierfür oder ist das ganze doch korrekt?</p>
<p>hier erstmal meine Lösung:</p>
<pre><code class="language-cpp">#include &lt;iostream&gt;
#include &lt;string&gt;

using namespace std;

int sortstring(string);

int main()
	{
		cout &lt;&lt; &quot;Bitte Quelltext: &quot;;
		string in_text;
		cin &gt;&gt; in_text;
		cout &lt;&lt; endl;

		cout &lt;&lt; &quot;Sortierte Ausgabe: &quot;; 

		return 0;
	}

int sortstring(string quelle)
{
	int laenge= static_cast&lt;int&gt;(quelle.length());;
	char* ziel= new char[laenge];

	int vorhanden[256]={0};
	for (int i=0; i &lt; laenge-1; i++)
		{
			int ascii = static_cast&lt;int&gt;(quelle[i]);
			if (vorhanden[ascii] == 0)
				ziel[ascii] = quelle[i];
		}
	return *ziel;
}
</code></pre>
]]></description><link>https://www.c-plusplus.net/forum/topic/202310/sortieren-von-zeichen</link><generator>RSS for Node</generator><lastBuildDate>Tue, 06 Oct 2026 16:58:18 GMT</lastBuildDate><atom:link href="https://www.c-plusplus.net/forum/topic/202310.rss" rel="self" type="application/rss+xml"/><pubDate>Wed, 09 Jan 2008 20:26:07 GMT</pubDate><ttl>60</ttl><item><title><![CDATA[Reply to Sortieren von Zeichen on Wed, 09 Jan 2008 20:26:07 GMT]]></title><description><![CDATA[<p>Die Aufgabe lautet:</p>
<blockquote>
<p>a) Erstellen Sie eine Funktion mit dem Namen sortstring, die einen string quelle als Parameter hat. Mit Hilfe von new soll diese Funktion einen String ziel dynamisch erzeugen, der alle Zei-chen von quelle, aber jetzt in sortierter Reihenfolge (entsprechend dem ASCII-Code) enthält. Ist ein Zeichen mehrfach im Quellstring gewesen, so soll es dennoch nur einmal im Zielstring auf-treten. Schließlich wird (mit dem return-Befehl) ein Zeiger auf den neuen String übergeben.<br />
b) Schreiben Sie dazu eine kurze main-Funktion, in dem sortstring eingesetzt und in dem der da-mit erzeugte String (über einen Zeiger) auf den Bildschirm ausgegeben wird.<br />
Ein Beispielablauf des Programms könnte die folgenden Bildschirmausgabe erzeugen:<br />
Bitte Quelltext: schule<br />
Sortierte Ausgabe: cehlsu<br />
Hinweis: Richten Sie in der Funktion sortstring ein integer-Feld mit 256 Elementen zum Zählen ein.</p>
</blockquote>
<p>Ich hab die aufgabe jetzt soweit gelöst, mir misslingt nur die Übergabe von dem Ziel pointer.(also von sortstring zu main)<br />
Außerdem bezweifel ich ein wenig das dies guter Programierstil ist da ich mal gelesen habe :</p>
<blockquote>
<p>Returne nie eine Referenz oder einen Zeiger auf eine lokale Variable.</p>
</blockquote>
<p>aber gut wenns mein Prof so will, gibt es bessere Varianten hierfür oder ist das ganze doch korrekt?</p>
<p>hier erstmal meine Lösung:</p>
<pre><code class="language-cpp">#include &lt;iostream&gt;
#include &lt;string&gt;

using namespace std;

int sortstring(string);

int main()
	{
		cout &lt;&lt; &quot;Bitte Quelltext: &quot;;
		string in_text;
		cin &gt;&gt; in_text;
		cout &lt;&lt; endl;

		cout &lt;&lt; &quot;Sortierte Ausgabe: &quot;; 

		return 0;
	}

int sortstring(string quelle)
{
	int laenge= static_cast&lt;int&gt;(quelle.length());;
	char* ziel= new char[laenge];

	int vorhanden[256]={0};
	for (int i=0; i &lt; laenge-1; i++)
		{
			int ascii = static_cast&lt;int&gt;(quelle[i]);
			if (vorhanden[ascii] == 0)
				ziel[ascii] = quelle[i];
		}
	return *ziel;
}
</code></pre>
]]></description><link>https://www.c-plusplus.net/forum/post/1433935</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/1433935</guid><dc:creator><![CDATA[junger_padawan]]></dc:creator><pubDate>Wed, 09 Jan 2008 20:26:07 GMT</pubDate></item><item><title><![CDATA[Reply to Sortieren von Zeichen on Wed, 09 Jan 2008 20:32:50 GMT]]></title><description><![CDATA[<p>mir fällt übrigens gerade auf das ich den dynamische speicher nicht wieder freigegeben habe.</p>
<pre><code class="language-cpp">delete[] ziel;
</code></pre>
]]></description><link>https://www.c-plusplus.net/forum/post/1433944</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/1433944</guid><dc:creator><![CDATA[junger_padawan]]></dc:creator><pubDate>Wed, 09 Jan 2008 20:32:50 GMT</pubDate></item><item><title><![CDATA[Reply to Sortieren von Zeichen on Wed, 09 Jan 2008 20:38:20 GMT]]></title><description><![CDATA[<p>In der Angabe steht eigentlich, dass du einen string mit new erstellen sollst und nicht ein char array.</p>
<p>Wenn du einen char* oder string* zurückgeben willst, dann sollte der Rückgabewert auch davon sein und nicht int.</p>
<p>Wenn du dann einen Zeiger auf den string zurück gibst, dann ist das auch kein Zeiger auf eine lokale Variable, weil du den string ja mit new erstellt hast.</p>
<p>Das delete solltest du auch erst machen, wenn du den string nicht mehr brauchst, also wenn du den string auch außerhalb der funktion nicht mehr brauchst.</p>
]]></description><link>https://www.c-plusplus.net/forum/post/1433952</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/1433952</guid><dc:creator><![CDATA[Überraschungsgast]]></dc:creator><pubDate>Wed, 09 Jan 2008 20:38:20 GMT</pubDate></item><item><title><![CDATA[Reply to Sortieren von Zeichen on Wed, 09 Jan 2008 21:01:40 GMT]]></title><description><![CDATA[<p>geändert:</p>
<pre><code class="language-cpp">string* ziel= new string[laenge];
</code></pre>
<p>geändert:</p>
<pre><code class="language-cpp">string* sortstring(string);

string* sortstring(string)
{
...
}
</code></pre>
<p>das mit</p>
<pre><code class="language-cpp">delete[] ziel;
</code></pre>
<p>nachdem ich den nicht mehr brauche, funktioniert nicht, sagt nicht deklarierte variable.</p>
<p>Wie macht man das mit der pointer Übergabe?<br />
ich kriege das immer noch nicht auf die Reihe.</p>
]]></description><link>https://www.c-plusplus.net/forum/post/1433970</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/1433970</guid><dc:creator><![CDATA[junger_padawan]]></dc:creator><pubDate>Wed, 09 Jan 2008 21:01:40 GMT</pubDate></item><item><title><![CDATA[Reply to Sortieren von Zeichen on Wed, 09 Jan 2008 21:10:25 GMT]]></title><description><![CDATA[<p>du gibst ja nicht den &quot;ziel&quot; pointer zurück, sondern den wert (Adresse vom mit new erstellten string) den &quot;ziel&quot; enthält.</p>
<pre><code class="language-cpp">string* sortstring(string)
{
  string* ziel= new string[laenge];
  //...
  return ziel;
}

string* bla = sortstring(intext);
//tuwas mit bla
delete bla;
</code></pre>
]]></description><link>https://www.c-plusplus.net/forum/post/1433975</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/1433975</guid><dc:creator><![CDATA[Überraschungsgast]]></dc:creator><pubDate>Wed, 09 Jan 2008 21:10:25 GMT</pubDate></item><item><title><![CDATA[Reply to Sortieren von Zeichen on Wed, 09 Jan 2008 21:11:46 GMT]]></title><description><![CDATA[<p>außerdem:<br />
kein array von string<br />
sondern</p>
<pre><code class="language-cpp">string* ziel= new string();
</code></pre>
]]></description><link>https://www.c-plusplus.net/forum/post/1433976</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/1433976</guid><dc:creator><![CDATA[Überraschungsgast]]></dc:creator><pubDate>Wed, 09 Jan 2008 21:11:46 GMT</pubDate></item><item><title><![CDATA[Reply to Sortieren von Zeichen on Wed, 09 Jan 2008 21:12:37 GMT]]></title><description><![CDATA[<p>Überraschungsgast schrieb:</p>
<blockquote>
<p>In der Angabe steht eigentlich, dass du einen string mit new erstellen sollst und nicht ein char array.</p>
</blockquote>
<p>Hast recht, aber gemeint war sicherlich char*. Abgesehen davon hat das Array die falsche Länge.</p>
<p>Der Tip mit dem 256-er-Array zielt wahrscheinlich darauf ab, buchzuführen, welche Zeichen vorkommen. Das kann man sich auch einfacher machen:</p>
<pre><code class="language-cpp">char* sortstring(string const&amp; quelle) {
    bool existing_chars[256] = {false};
    size_t new_len = 0;
    for (string::const_iterator i = quelle.begin(); i != quelle.end(); ++i) {
        size_t chr = static_cast&lt;size_t&gt;(*i);
        if (not existing_chars[chr])
            ++new_len;
        existing_chars[chr] = true;
    }
    char* ziel = new char[new_len];
    char* c = ziel;
    for (size_t i = 0; i &lt; 256; ++i)
        if (existing_chars[i])
            *c++ = static_cast&lt;char&gt;(i);

    return ziel;
}
</code></pre>
<p>(Ungetestet.)</p>
<p>Einfacher geht das mit einer std::map. Aber das Prinzip bleibt dasselbe.</p>
<p>Übrigens hast Du recht: Das Zurückgeben solch eines Zeigers ist schlechter Stil, da fehleranfällig (und unnötig: wozu gibt's die String-Klasse?), aber nicht aus dem von Dir genannten Grund, denn der Zeiger zeigt nicht auf lokalen Speicher, sondern auf Heap-Speicher.</p>
]]></description><link>https://www.c-plusplus.net/forum/post/1433977</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/1433977</guid><dc:creator><![CDATA[Konrad Rudolph]]></dc:creator><pubDate>Wed, 09 Jan 2008 21:12:37 GMT</pubDate></item><item><title><![CDATA[Reply to Sortieren von Zeichen on Wed, 09 Jan 2008 21:53:24 GMT]]></title><description><![CDATA[<p><a class="plugin-mentions-user plugin-mentions-a" href="https://www.c-plusplus.net/forum/uid/5021">@Konrad</a></p>
<p>deine Variante verstehe ich leider nicht so ganz,<br />
Ich schreib mal zu jeder zeile ein Kommentar bitte korrigiert mich wenns nicht stimmt.</p>
<pre><code class="language-cpp">char* sortstring(string const&amp; quelle) { //const referenz von quelle auf einen string //ausserdem wird hier die funktion sortstring ( die auf einen char zeigt) definiert, kann mir darunter sehr wenig vorstellen
    bool existing_chars[256] = {false}; // array anlegen um existrierede Zeichen später nur einmal zu schreiben
    size_t new_len = 0; // definieren der längenvariable
    for (string::const_iterator i = quelle.begin(); i != quelle.end(); ++i) { // Schleife um 
        size_t chr = static_cast&lt;size_t&gt;(*i); // hier verstehe ich nicht wieso du es in den size_t typ casten tust ( evlt. wird später was mit länge verglichen?!weil ja length(); den Rückgabewert hat)
        if (not existing_chars[chr]) //wenn an dieser stelle kein Zeichen ( true) vorhanden ist wird
            ++new_len; // wird die länge erhöht(prefix-increment der Länge)
        existing_chars[chr] = true;  // und das Zeichen wird abgehackt das es schon benutzt wurde
    }
    char* ziel = new char[new_len]; // speicher im heap reservieren
    char* c = ziel; // einen Zeiger auf ziel ( den Speicher im Stapel)
    for (size_t i = 0; i &lt; 256; ++i) // forschleife um auf charwerte zu casten
        if (existing_chars[i]) // wenn einer gefunden
            *c++ = static_cast&lt;char&gt;(i); wird i gecastet wieso aber auf den *c und nicht direkt auf *ziel und aus welchem grund wird hier inrekemtiert??

    return ziel;
}
</code></pre>
<p>viele fragen hab ich wa <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>
<p>schönen abend noch</p>
]]></description><link>https://www.c-plusplus.net/forum/post/1433996</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/1433996</guid><dc:creator><![CDATA[junger_padawan]]></dc:creator><pubDate>Wed, 09 Jan 2008 21:53:24 GMT</pubDate></item><item><title><![CDATA[Reply to Sortieren von Zeichen on Wed, 09 Jan 2008 22:07:38 GMT]]></title><description><![CDATA[<p>Hallo junger Padawan,</p>
<p>ich mach's mir mal einfach und verzichte auf die ganzen Code-Tags beim Durchgehen des Codes:</p>
<pre><code class="language-cpp">char* sortstring(string const&amp; quelle)
</code></pre>
<p>Du übergibst den String direkt. Dadurch wird eine Kopie des Strings erzeugt. 'string const&amp;' ist letztendlich dasselbe, nur dass keine Kopie des Strings erzeugt werden muss, weil auf das Original verwiesen wird.</p>
<p>Wenn ihr noch keine Referenzen kennt, lass das einfach weg.</p>
<pre><code class="language-cpp">size_t chr = static_cast&lt;size_t&gt;(*i); // hier verstehe ich nicht wieso du es in den size_t typ casten tust
</code></pre>
<p>'*i' ist ein Zeichen des Strings. Dieses Zeichen wollen wir als Index für das Array verwenden. Ich sträube mich dagegen, einen char als Ganzzahl zu betrachten (auch wenn das in C++ nunmal so ist), daher caste ich das ganze explizit in einen Ganzzahltypen.</p>
<pre><code class="language-cpp">*c++ = static_cast&lt;char&gt;(i); wird i gecastet wieso aber auf den *c und nicht direkt auf *ziel und aus welchem grund wird hier inrekemtiert??
</code></pre>
<p>Was hier passiert, ist folgendes:</p>
<p>Wir haben unseren Speicher reserviert und 'ziel' verweist darauf. Jetzt müssen wir diesen Speicher Zeichen für Zeichen durchgehen und an der jeweiligen Stelle das nächste Zeichen abspeichern. Das zeichenweise Durchgehen machen wir uns einfacher (gut, Ansichtssache), indem wir zuerst einen Zeiger auf den Beginn zeigen lassen ('c'), und diesen Zeiger dann immer erhöhen, dass er auf das nächste Element zeigt. Direkt vor der Erhöhung des Zeigers schreiben wir an die aktuelle Speicheradresse aber noch das aktuelle Zeichen. Das geschieht durch das '*c++ = zeichen'. Man könnte das auch ausführlich schreiben, nämlich so:</p>
<pre><code class="language-cpp">*c = zeichen;
++c; // Speicherindex erhöhen.
</code></pre>
<p>In jedem Fall ist das aktuelle Zeichen gegeben durch 'static_cast&lt;char&gt;(i)'.</p>
]]></description><link>https://www.c-plusplus.net/forum/post/1434004</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/1434004</guid><dc:creator><![CDATA[Konrad Rudolph]]></dc:creator><pubDate>Wed, 09 Jan 2008 22:07:38 GMT</pubDate></item><item><title><![CDATA[Reply to Sortieren von Zeichen on Thu, 10 Jan 2008 14:00:48 GMT]]></title><description><![CDATA[<p>Mal ne Frage ... dürft ihr alle Funktionen des Standards nutzen?</p>
<pre><code class="language-cpp">#include &lt;algorithm&gt;
#include &lt;string&gt;

std::string sortstring(std::string string)
{
    std::string* copy(new std::string(string));
    std::sort(copy-&gt;begin(), copy-&gt;end());
    std::unique(copy-&gt;begin(), copy-&gt;end());
    return copy;
}
</code></pre>
<p>Ist zwar etwas unperformant aber einfach <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>
<pre><code class="language-cpp">int main()
{    
    std::cout &lt;&lt; &quot;Bitte Quelltext: &quot;;
    std::string input;
    std::getline(std::cin, input);
    std::string* ptr_sort(sortstring(input));
    std::cout &lt;&lt; &quot;Sortierte Ausgabe: &quot; &lt;&lt; *ptr_sort &lt;&lt; std::endl;
    delete ptr_sort;
}
</code></pre>
<p>... naja den Prof kannst du übrigens direkt in die Tonne kloppen ...</p>
]]></description><link>https://www.c-plusplus.net/forum/post/1434294</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/1434294</guid><dc:creator><![CDATA[*D*Evil]]></dc:creator><pubDate>Thu, 10 Jan 2008 14:00:48 GMT</pubDate></item><item><title><![CDATA[Reply to Sortieren von Zeichen on Thu, 10 Jan 2008 14:12:19 GMT]]></title><description><![CDATA[<p>(D)Evil schrieb:</p>
<blockquote>
<p>naja den Prof kannst du übrigens direkt in die Tonne kloppen ...</p>
</blockquote>
<p>Warum immer so negativ? Solchte Problemstellungen sind an sich doch ganz gut geeignet, um algorithmisches Denken beizubringen. Gut, dass C++ hierfür nicht unbedingt geeignet ist, ist eine andere Sache. Aber nicht jeder will mit einer funktionalen Sprache anfangen.</p>
]]></description><link>https://www.c-plusplus.net/forum/post/1434301</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/1434301</guid><dc:creator><![CDATA[Konrad Rudolph]]></dc:creator><pubDate>Thu, 10 Jan 2008 14:12:19 GMT</pubDate></item><item><title><![CDATA[Reply to Sortieren von Zeichen on Thu, 10 Jan 2008 14:50:25 GMT]]></title><description><![CDATA[<p>(D)Evil schrieb:</p>
<blockquote>
<p>Mal ne Frage ... dürft ihr alle Funktionen des Standards nutzen?</p>
<pre><code class="language-cpp">#include &lt;algorithm&gt;
#include &lt;string&gt;

std::string sortstring(std::string string)
{
    std::string* copy(new std::string(string));
    std::sort(copy-&gt;begin(), copy-&gt;end());
    std::unique(copy-&gt;begin(), copy-&gt;end());
    return copy;
}
</code></pre>
<p>Ist zwar etwas unperformant aber einfach <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>
</blockquote>
<p>huch?<br />
den code hast du anscheinend nicht ausgiebig getestet <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>
<pre><code class="language-cpp">std::string * sorstring (...)
//...
copy.erase (std::unique(copy.begin(), copy.end()), copy.end());
</code></pre>
<p>oder</p>
<pre><code class="language-cpp">std::string* sortstring(std::string string)
{
    std::sort(string-&gt;begin(), string-&gt;end());
    std::string *copy = new string;
    std::unique(copy-&gt;begin(), copy-&gt;end(), back_inserter(*copy));
    return copy;
}
</code></pre>
<p>ist auch nicht performant, aber funktioniert immerhin <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/1434339</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/1434339</guid><dc:creator><![CDATA[queer_boy]]></dc:creator><pubDate>Thu, 10 Jan 2008 14:50:25 GMT</pubDate></item><item><title><![CDATA[Reply to Sortieren von Zeichen on Thu, 10 Jan 2008 16:18:12 GMT]]></title><description><![CDATA[<p><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="😉"
    /> Ja auch gut <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="😉"
    /> Ich teste die Codes leider nie wenn ich was ins Forum schreibe ... geht auch so gut wie immer gut <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="😉"
    /> Nur diesesmal scheinbar nicht.</p>
]]></description><link>https://www.c-plusplus.net/forum/post/1434417</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/1434417</guid><dc:creator><![CDATA[*D*Evil]]></dc:creator><pubDate>Thu, 10 Jan 2008 16:18:12 GMT</pubDate></item><item><title><![CDATA[Reply to Sortieren von Zeichen on Thu, 10 Jan 2008 19:11:48 GMT]]></title><description><![CDATA[<p>(D)Evil schrieb:</p>
<blockquote>
<p>Mal ne Frage ... dürft ihr alle Funktionen des Standards nutzen?</p>
</blockquote>
<p>Ich denke nicht, static_cast kennt er nichtmal (darauf wurde er letztens von jemanden angesprochen, und musste zugeben das nicht zu kennen, genauso wie er &lt;algorithm&gt; nicht kennt)<br />
also ich denke in Klausuren ist es besser auf das zu setzen was er kennt sonst gibt das vllt. Probleme.</p>
<p>(D)Evil schrieb:</p>
<blockquote>
<p>... naja den Prof kannst du übrigens direkt in die Tonne kloppen ...</p>
</blockquote>
<p>oh wie Recht du hast <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="😃"
    /> (kannst du Gedanken lesen?)</p>
<p>danke für eure Hilfe</p>
]]></description><link>https://www.c-plusplus.net/forum/post/1434527</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/1434527</guid><dc:creator><![CDATA[junger_padawan]]></dc:creator><pubDate>Thu, 10 Jan 2008 19:11:48 GMT</pubDate></item><item><title><![CDATA[Reply to Sortieren von Zeichen on Fri, 11 Jan 2008 06:47:42 GMT]]></title><description><![CDATA[<p>junger_padawan schrieb:</p>
<blockquote>
<p>(D)Evil schrieb:</p>
<blockquote>
<p>... naja den Prof kannst du übrigens direkt in die Tonne kloppen ...</p>
</blockquote>
<p>oh wie Recht du hast <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="😃"
    /> (kannst du Gedanken lesen?)</p>
</blockquote>
<p>Glaube ich weniger - aber schon die Aufgabenstellung &quot;mit Hilfe von <em>new</em>...&quot; deutet darauf hin, daß er wenig Ahnung hat von C++.</p>
<p>Randfrage: Welche Teile von C++ kennt der Professor überhaupt? string scheint dabei zu sein, wie sieht es mit anderen STL-Containern aus?</p>
<pre><code class="language-cpp">string sortstring(const string&amp; input)
{
  set&lt;char&gt; sorted(input.begin(),input.end());
  return string(sorted.begin(),sorted.end());//ich benutze bewußt KEIN new
}
</code></pre>
]]></description><link>https://www.c-plusplus.net/forum/post/1434659</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/1434659</guid><dc:creator><![CDATA[CStoll]]></dc:creator><pubDate>Fri, 11 Jan 2008 06:47:42 GMT</pubDate></item><item><title><![CDATA[Reply to Sortieren von Zeichen on Fri, 11 Jan 2008 07:05:45 GMT]]></title><description><![CDATA[<p>die aufgabe ist nicht grad die hohe kunst der programmierung. das scheint aus nem grundlagen kurs für studienanfänger zu stammen. da muss man davon ausgehen, dass einige hörer das erste mal in ihrem leben etwas mit programmiersprachen zu tun haben. entsprechend simpel sind die aufgaben formuliert und dementsprechend &quot;naiv&quot; sind die lösungsvorgaben.</p>
<p>in der aufgabe geht es darum, sich gedanken zu machen, was ein string ist, wie man an die einzelnen bestandteile herankommt und wie grundlegend daten sortiert werden können. der prof hat hier einen sehr einfach ansatz vorgegeben, sich lediglich auf 8 bit zeichen zu beschränken und lenkt in die richtung, bucketsort zu verwenden.</p>
<p>würd mich einfach daran orientieren und lieber hinweise in den code schreiben, was an dieser lösung ungünstig ist, anstatt einfach einen &quot;besseren&quot; code abzuliefern. maximal als alternative.</p>
]]></description><link>https://www.c-plusplus.net/forum/post/1434662</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/1434662</guid><dc:creator><![CDATA[tdk@]]></dc:creator><pubDate>Fri, 11 Jan 2008 07:05:45 GMT</pubDate></item><item><title><![CDATA[Reply to Sortieren von Zeichen on Fri, 11 Jan 2008 08:20:11 GMT]]></title><description><![CDATA[<p>junger_padawan schrieb:</p>
<blockquote>
<p>(D)Evil schrieb:</p>
<blockquote>
<p>Mal ne Frage ... dürft ihr alle Funktionen des Standards nutzen?</p>
</blockquote>
<p>Ich denke nicht, static_cast kennt er nichtmal (darauf wurde er letztens von jemanden angesprochen, und musste zugeben das nicht zu kennen, genauso wie er &lt;algorithm&gt; nicht kennt)<br />
also ich denke in Klausuren ist es besser auf das zu setzen was er kennt sonst gibt das vllt. Probleme...</p>
</blockquote>
<p>Das Problem mit Dozenten sowie Lehrern ist zumeist das sie einmal gelernt haben und damit meinen es zu beherrschen (ich kenne Ausnahmefälle, aber die Aussage trifft auf den Großteil derer zu die ich bisher im Informatikbereich kennen gelernt habe). Nun ist es so das einige vor dem Verabschieden des C++98 Standes C++ gelernt haben, und nach dem (alten) Stand lehren.</p>
<p>Dabei gibt es ganz gravierende Unterschiede im Pre-Standard zum Standard, die sich auch auf Fehlerhandling beziehen. Heutzutage ist zum Beispiel aktiviertes Exceptionhandling und RTTI der Standard, mit entsprechenden Auswirkungen. Gravierendes Beispiel:</p>
<pre><code class="language-cpp">int main()
{
    // Behandlung von fehlgeschlagenen new in Pre-Standard:
    int* a = new int;
    if(!a)
        ; // &lt;-- Hier Fehlerbehandlung

    // Nach dem Standard wird sich aber hier das Programm verabschieden,
    // wenn nicht zufälligerweise irgendwo eine exception gefangen wird...
    try
    {
        int* a = new int;
        ; // &lt;-- Hier kommt er nur hin, wenn new erfolgreich war
    }
    catch(std::bad_alloc&amp; exp)
    {
        // Fehlerbehandlung
    }
}
</code></pre>
<p>Jeder Dozent/Lehrer sollte sich zumindestens alle 2-3 Jahre mal über Änderungen informieren, sofern er in einem sehr schnelllebigen Bereich (wie Informatik) arbeitet.</p>
<p>cu André</p>
]]></description><link>https://www.c-plusplus.net/forum/post/1434692</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/1434692</guid><dc:creator><![CDATA[asc]]></dc:creator><pubDate>Fri, 11 Jan 2008 08:20:11 GMT</pubDate></item><item><title><![CDATA[Reply to Sortieren von Zeichen on Fri, 11 Jan 2008 08:49:24 GMT]]></title><description><![CDATA[<p>Yo, sieht man ja daran, das hin und wieder jemand mit .h-Standard-Headern ankommt. Seit 10 Jahren obsolet. Man muß sich mal 10 Jahre vorstellen, im PC-Bereich.</p>
]]></description><link>https://www.c-plusplus.net/forum/post/1434710</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/1434710</guid><dc:creator><![CDATA[Artchi]]></dc:creator><pubDate>Fri, 11 Jan 2008 08:49:24 GMT</pubDate></item></channel></rss>