<?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[template-Prädikatproblem]]></title><description><![CDATA[<p>Hallo!<br />
Ich muss euch wieder einmal belästigen <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="🙂"
    /><br />
Es eght um die folgende Aufgabenstellung (eigentlich um die zweite Teilaufgabe):</p>
<blockquote>
<p>Implementieren Sie einen<br />
generischen Algorithmus, der die Sortierung eines über Iteratoren gegebenen Bereichs in einem<br />
Container prüft. Folgende 4 Fälle sollen dabei unterschieden werden:<br />
 Der Bereich ist aufsteigend sortiert.<br />
 Der Bereich ist absteigend sortiert.<br />
 Alle Elemente sind gleich oder der Bereich ist leer.<br />
 Der Bereich ist unsortiert.<br />
Definieren Sie einen entsprechenden Enumerationstypen und verwenden diesen als Rückgabetyp<br />
für Ihren Algorithmus.<br />
1<br />
<strong>Implementieren sie weiters eine überladene Variante mit einem Prädikat als dritten Parameter, das<br />
die für die Sortierung relevante Vergleichsfunktion angibt.<br />
Achten Sie darauf, dass Ihr Algorithmus auch für Container mit sequentiellem Zugriff funktioniert.</strong></p>
</blockquote>
<p>Den ersten Teil hab ich schon implementiert, allerdings die Frage mit dem Prädikat verstehe ich nicht ganz.<br />
Muss ich hier den Container nach der Überprüfung (wie und ob der Container sortiert ist) nachher dann sortieren? <img
      src="https://www.c-plusplus.net/forum/plugins/nodebb-plugin-emoji/emoji/emoji-one/1f615.png?v=ab1pehoraso"
      class="not-responsive emoji emoji-emoji-one emoji--confused_face"
      title=":confused:"
      alt="😕"
    /><br />
Was soll der Funktor tun?</p>
<p>Falls es wie beim ersten Teil sollte (nur Überprüfung auf Sortierung):<br />
//sorttype ist Rückgabewert vom Datentyp enum</p>
<pre><code>template &lt;typename titor, typename funktion&gt;
	sortType überladenefunktion (titor begin, titor end, funktion f)
{
//blabla
}
</code></pre>
<p>dann kann ich das Prädikat ja nicht innerhalb der Funktionstemplate-definition (das Wort gibts wahrscheinlich nicht :D), sopmit kann ich keine Iteratoren vom Typ TItor mitgeben (oder?), dass heißt ich müsste mich auf einen Datentypen spezialisieren (int, double,...)</p>
<p>z.b:</p>
<pre><code>bool f(int i, int j)
	{
return (i&lt;j);
	}
</code></pre>
<p>wobei ich nach meinem jetzigen Beispielverständnis nicht weiß, wie ich mit einem Prädikat die 4 Fälle abdecken soll?</p>
]]></description><link>https://www.c-plusplus.net/forum/topic/317056/template-prädikatproblem</link><generator>RSS for Node</generator><lastBuildDate>Wed, 29 Jul 2026 13:44:50 GMT</lastBuildDate><atom:link href="https://www.c-plusplus.net/forum/topic/317056.rss" rel="self" type="application/rss+xml"/><pubDate>Sat, 25 May 2013 20:40:24 GMT</pubDate><ttl>60</ttl><item><title><![CDATA[Reply to template-Prädikatproblem on Sat, 25 May 2013 20:40:24 GMT]]></title><description><![CDATA[<p>Hallo!<br />
Ich muss euch wieder einmal belästigen <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="🙂"
    /><br />
Es eght um die folgende Aufgabenstellung (eigentlich um die zweite Teilaufgabe):</p>
<blockquote>
<p>Implementieren Sie einen<br />
generischen Algorithmus, der die Sortierung eines über Iteratoren gegebenen Bereichs in einem<br />
Container prüft. Folgende 4 Fälle sollen dabei unterschieden werden:<br />
 Der Bereich ist aufsteigend sortiert.<br />
 Der Bereich ist absteigend sortiert.<br />
 Alle Elemente sind gleich oder der Bereich ist leer.<br />
 Der Bereich ist unsortiert.<br />
Definieren Sie einen entsprechenden Enumerationstypen und verwenden diesen als Rückgabetyp<br />
für Ihren Algorithmus.<br />
1<br />
<strong>Implementieren sie weiters eine überladene Variante mit einem Prädikat als dritten Parameter, das<br />
die für die Sortierung relevante Vergleichsfunktion angibt.<br />
Achten Sie darauf, dass Ihr Algorithmus auch für Container mit sequentiellem Zugriff funktioniert.</strong></p>
</blockquote>
<p>Den ersten Teil hab ich schon implementiert, allerdings die Frage mit dem Prädikat verstehe ich nicht ganz.<br />
Muss ich hier den Container nach der Überprüfung (wie und ob der Container sortiert ist) nachher dann sortieren? <img
      src="https://www.c-plusplus.net/forum/plugins/nodebb-plugin-emoji/emoji/emoji-one/1f615.png?v=ab1pehoraso"
      class="not-responsive emoji emoji-emoji-one emoji--confused_face"
      title=":confused:"
      alt="😕"
    /><br />
Was soll der Funktor tun?</p>
<p>Falls es wie beim ersten Teil sollte (nur Überprüfung auf Sortierung):<br />
//sorttype ist Rückgabewert vom Datentyp enum</p>
<pre><code>template &lt;typename titor, typename funktion&gt;
	sortType überladenefunktion (titor begin, titor end, funktion f)
{
//blabla
}
</code></pre>
<p>dann kann ich das Prädikat ja nicht innerhalb der Funktionstemplate-definition (das Wort gibts wahrscheinlich nicht :D), sopmit kann ich keine Iteratoren vom Typ TItor mitgeben (oder?), dass heißt ich müsste mich auf einen Datentypen spezialisieren (int, double,...)</p>
<p>z.b:</p>
<pre><code>bool f(int i, int j)
	{
return (i&lt;j);
	}
</code></pre>
<p>wobei ich nach meinem jetzigen Beispielverständnis nicht weiß, wie ich mit einem Prädikat die 4 Fälle abdecken soll?</p>
]]></description><link>https://www.c-plusplus.net/forum/post/2326150</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/2326150</guid><dc:creator><![CDATA[ACnut]]></dc:creator><pubDate>Sat, 25 May 2013 20:40:24 GMT</pubDate></item><item><title><![CDATA[Reply to template-Prädikatproblem on Sat, 25 May 2013 20:59:35 GMT]]></title><description><![CDATA[<p>ACnut schrieb:</p>
<blockquote>
<p>Funktionstemplate-definition (das Wort gibts wahrscheinlich nicht :D)</p>
</blockquote>
<p>Nicht im Duden.</p>
<blockquote>
<p>Was soll der Funktor tun?</p>
</blockquote>
<p>Ganz einfach. Diese Version mit dem Prädikat ist in der STL beliebt - das Prädikat ist einfach ein Funktionsobjekt, dass zwei Objekte entsprechenden Typs nimmt und einen bool (bzw. einen zu <code>bool</code> konvertierbaren Wert) zurückgibt.</p>
<p>Das Prädikat gibt einfach an, ob ein Objekt in der Sortierung vor dem zweiten kommt oder nicht. Also ob das erste der Funktion übergebene Objekt beim sortieren vor das zweite kommt oder nicht.</p>
<blockquote>
<p>dass heißt ich müsste mich auf einen Datentypen spezialisieren (int, double,...)</p>
</blockquote>
<p>Naja, es gibt vordefinierte Funktoren wie <code>std::greater_equal</code> - die musst du nur noch mit einer Parameterliste qualifizieren und instantiieren, also <code>greater_equal&lt;int&gt;()</code> , und an die Funktion übergeben.<br />
Genauso kannst du auch deine Prädikate flexibler gestalten.</p>
<blockquote>
<p>wobei ich nach meinem jetzigen Beispielverständnis nicht weiß, wie ich mit einem Prädikat die 4 Fälle abdecken soll?</p>
</blockquote>
<p>Nein nein. Dein Funktionstemplate prüft. Dein Prädikat macht nur einen simplen Vergleich, auf dem alles aufbaut.<br />
Ein Beispiel:</p>
]]></description><link>https://www.c-plusplus.net/forum/post/2326152</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/2326152</guid><dc:creator><![CDATA[Sone]]></dc:creator><pubDate>Sat, 25 May 2013 20:59:35 GMT</pubDate></item><item><title><![CDATA[Reply to template-Prädikatproblem on Sat, 25 May 2013 21:04:30 GMT]]></title><description><![CDATA[<p>ACnut schrieb:</p>
<blockquote>
<p>Den ersten Teil hab ich schon implementiert,</p>
</blockquote>
<p>Fein. Da kommt irgendwo if(*a&lt;*b) vor.</p>
<p>ACnut schrieb:</p>
<blockquote>
<p>allerdings die Frage mit dem Prädikat verstehe ich nicht ganz.</p>
</blockquote>
<p>Dann kommt halt if(f(*a,*b)) vor.<br />
Beachte, daß if(*a&gt;*b) nicht mehr direkt darstellbar ist, aber das gleichwertige if(*b&lt;*a) geht wieder als if(f(*b,*a)).</p>
<p>ACnut schrieb:</p>
<blockquote>
<p>Was soll der Funktor tun?</p>
</blockquote>
<p>Er soll erlauben, daß zum Beispiel Strings nur nach dem Anfangsbuchstaben auf Sortiertheit geprüft werden können oder unter Vernachlässigung der Groß-Kleinschreibung.</p>
<p>ACnut schrieb:</p>
<blockquote>
<p>dann kann ich das Prädikat ja nicht innerhalb der Funktionstemplate-definition (das Wort gibts wahrscheinlich nicht :D), sopmit kann ich keine Iteratoren vom Typ TItor mitgeben (oder?), dass heißt ich müsste mich auf einen Datentypen spezialisieren (int, double,...)</p>
<p>z.b:</p>
<pre><code>bool f(int i, int j)
	{
return (i&lt;j);
	}
</code></pre>
</blockquote>
<p>Ja, das ist angemessen.</p>
<p>ACnut schrieb:</p>
<blockquote>
<p>wobei ich nach meinem jetzigen Beispielverständnis nicht weiß, wie ich mit einem Prädikat die 4 Fälle abdecken soll?</p>
</blockquote>
<p>Ein Prädikat ist eine Funktion (oder Funktor oder Programm, was soll der Geiz), die bool zurückgibt. Das Prädikat soll hier nur sagen, ob i kleiner als j ist. Die 4 Fälle stellt weiterhin Deine große Funktion fest.</p>
]]></description><link>https://www.c-plusplus.net/forum/post/2326154</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/2326154</guid><dc:creator><![CDATA[volkard]]></dc:creator><pubDate>Sat, 25 May 2013 21:04:30 GMT</pubDate></item><item><title><![CDATA[Reply to template-Prädikatproblem on Sat, 25 May 2013 21:09:42 GMT]]></title><description><![CDATA[<p>Der Standard sagt bspw. über diese Prädikate:</p>
<blockquote>
<p>A <strong>function object type</strong> is an object type (3.9) that can be the type of the postﬁx-expression in a function call<br />
(5.2.2, 13.3.1.1).<br />
A <strong>function object</strong> is an object of a function object type. In the places where one would<br />
expect to pass a pointer to a function to an algorithmic template (Clause 25), the interface is speciﬁed to<br />
accept a function object. <strong>This not only makes algorithmic templates work with pointers to functions, but<br />
also enables them to work with arbitrary function objects.</strong></p>
</blockquote>
<p>Es macht die Algos sehr flexibel, wenn sie <em>alle aufrufbaren Entitäten</em> nutzen können, anstatt bspw. nur Funktionszeiger (und daraus folgend nur Funktionen selbst, keine Funktoren o.ä.).</p>
<pre><code>template&lt;typename Arithmetic&gt;
struct Even /// Ein Objekt vom Typ Even&lt;...&gt; prüft, ob eine Zahl gerade ist oder nicht
{
    bool operator()( Arithmetic lhs )
    {
        return lhs % 2 == 0;
    }
};

#include &lt;iostream&gt;
#include &lt;algorithm&gt;
#include &lt;iterator&gt;

int main()
{
    int arr[]{4, 2, 3, 7, 9, 6, 3, 5};

    std::partition( std::begin(arr), std::end(arr), Even&lt;int&gt;() );

    std::copy( std::begin(arr), std::end(arr), std::ostream_iterator&lt;int&gt;(std::cout, &quot;, &quot;) );
}
</code></pre>
<p>Ausgabe:</p>
<pre><code>4, 2, 6, 7, 9, 3, 3, 5,
</code></pre>
]]></description><link>https://www.c-plusplus.net/forum/post/2326155</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/2326155</guid><dc:creator><![CDATA[Sone]]></dc:creator><pubDate>Sat, 25 May 2013 21:09:42 GMT</pubDate></item><item><title><![CDATA[Reply to template-Prädikatproblem on Sat, 25 May 2013 21:19:43 GMT]]></title><description><![CDATA[<p>Sone schrieb:</p>
<blockquote>
<blockquote>
<p>dass heißt ich müsste mich auf einen Datentypen spezialisieren (int, double,...)</p>
</blockquote>
<p>Naja, es gibt vordefinierte Funktoren wie <code>std::greater_equal</code> - die musst du nur noch mit einer Parameterliste qualifizieren und instantiieren, also <code>greater_equal&lt;int&gt;()</code> , und an die Funktion übergeben.<br />
Genauso kannst du auch deine Prädikate flexibler gestalten.</p>
<p>Ein Beispiel:</p>
</blockquote>
<p>ok und wie mach ich das mit dem datentypen ohne das prädikat nur auf einen datentypen zu spezialisieren?</p>
<blockquote>
<p>Fein. Da kommt irgendwo if(*a&lt;*b) vor.</p>
</blockquote>
<p>genau und noch mehr :p a&gt;b &amp; a==b</p>
<blockquote>
<p>Ein Prädikat ist eine Funktion (oder Funktor oder Programm, was soll der Geiz), die bool zurückgibt. Das Prädikat soll hier nur sagen, ob i kleiner als j ist. Die 4 Fälle stellt weiterhin Deine große Funktion fest.</p>
</blockquote>
<p>ok eure antworten sind schlüssig, bis auf die oben genannte frage,<br />
bei der ich folgendes brauche:</p>
<blockquote>
<p>Ein Beispiel:</p>
</blockquote>
<p><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="😃"
    /> oder erklärung</p>
]]></description><link>https://www.c-plusplus.net/forum/post/2326157</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/2326157</guid><dc:creator><![CDATA[ACnut]]></dc:creator><pubDate>Sat, 25 May 2013 21:19:43 GMT</pubDate></item><item><title><![CDATA[Reply to template-Prädikatproblem on Sat, 25 May 2013 21:26:35 GMT]]></title><description><![CDATA[<p>ACnut schrieb:</p>
<blockquote>
<blockquote>
<p>Fein. Da kommt irgendwo if(*a&lt;*b) vor.</p>
</blockquote>
<p>genau und noch mehr :p a&gt;b &amp; a==b</p>
</blockquote>
<p>Du kannst a&gt;b ausdrücken als b&lt;a<br />
Du kannst a&gt;=b ausdrücken als !(a&lt;b)<br />
Du kannst a!=b ausdrücken als a&lt;b || b&lt;a<br />
Und == und &lt;= wirste selber rausfinden.</p>
<p>ACnut schrieb:</p>
<blockquote>
<p>ok eure antworten sind schlüssig, bis auf die oben genannte frage,<br />
bei der ich folgendes brauche:</p>
<blockquote>
<p>Ein Beispiel:</p>
</blockquote>
<p><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="😃"
    /> oder erklärung</p>
</blockquote>
<p>Weitere Erklärung fällt mir nicht ein und das Beispiel wäre schon die fertige Lösung, mag ich heute mal nicht machen.</p>
]]></description><link>https://www.c-plusplus.net/forum/post/2326159</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/2326159</guid><dc:creator><![CDATA[volkard]]></dc:creator><pubDate>Sat, 25 May 2013 21:26:35 GMT</pubDate></item><item><title><![CDATA[Reply to template-Prädikatproblem on Sat, 25 May 2013 21:33:59 GMT]]></title><description><![CDATA[<p>Sone schrieb:</p>
<blockquote>
<pre><code>template&lt;typename Arithmetic&gt;
struct Even /// Ein Objekt vom Typ Even&lt;...&gt; prüft, ob eine Zahl gerade ist oder nicht
{
    bool operator()( Arithmetic lhs )
    {
        return lhs % 2 == 0;
    }
};

#include &lt;iostream&gt;
#include &lt;algorithm&gt;
#include &lt;iterator&gt;

int main()
{
    int arr[]{4, 2, 3, 7, 9, 6, 3, 5};

    std::partition( std::begin(arr), std::end(arr), Even&lt;int&gt;() );

    std::copy( std::begin(arr), std::end(arr), std::ostream_iterator&lt;int&gt;(std::cout, &quot;, &quot;) );
}
</code></pre>
<p>Ausgabe:</p>
<pre><code>4, 2, 6, 7, 9, 3, 3, 5,
</code></pre>
</blockquote>
<p>ok, das Beispiel ist eh gekommen <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="🤡"
    /> entschuldigung für meine hektik<br />
wieso geht das mit dem struct. ich dachte in eine struct kann ma keine funktionen reinpacken, daher muss man funktionen implementieren?</p>
<p>also wenn ich das beispiel (von dir) richtig verstanden habe, dann wird mit dem template eine implizite datentypkonvertierung durchgeführt, simt muss ich mich nicht auf einen speziellen datentyp fixieren?</p>
<p>bei meinem beispiel würde das prädikat dann also so aussehen?:</p>
<p>struct comparison /// Ein Objekt vom Typ Even&lt;...&gt; prüft, ob eine Zahl gerade ist oder nicht<br />
[code=&quot;cpp&quot;]template&lt;typename Arithmetic&gt;<br />
{<br />
bool operator()( Arithmetic lhs, Arithmetic rhs )<br />
{<br />
return lhs &lt; rhs;<br />
}<br />
};</p>
<p>bin zu müde um neues Wissen aufzunehmen <img
      src="https://www.c-plusplus.net/forum/plugins/nodebb-plugin-emoji/emoji/emoji-one/1f62e.png?v=ab1pehoraso"
      class="not-responsive emoji emoji-emoji-one emoji--face_with_open_mouth"
      title=":open_mouth:"
      alt="😮"
    /> muss schlafen gehen<br />
Implementierung erfolgt morgen</p>
<p>bis dahin gute Nacht <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 />
:good night sleep: : on</p>
]]></description><link>https://www.c-plusplus.net/forum/post/2326160</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/2326160</guid><dc:creator><![CDATA[ACnut]]></dc:creator><pubDate>Sat, 25 May 2013 21:33:59 GMT</pubDate></item><item><title><![CDATA[Reply to template-Prädikatproblem on Sat, 25 May 2013 21:39:08 GMT]]></title><description><![CDATA[<p>volkard schrieb:</p>
<blockquote>
<p>ACnut schrieb:</p>
<blockquote>
<blockquote>
<p>Fein. Da kommt irgendwo if(*a&lt;*b) vor.</p>
</blockquote>
<p>genau und noch mehr :p a&gt;b &amp; a==b</p>
</blockquote>
<p>Du kannst a&gt;b ausdrücken als b&lt;a<br />
Du kannst a&gt;=b ausdrücken als !(a&lt;b)<br />
Du kannst a!=b ausdrücken als a&lt;b || b&lt;a<br />
Und == und &lt;= wirste selber rausfinden.</p>
<p>ACnut schrieb:</p>
<blockquote>
<p>ok eure antworten sind schlüssig, bis auf die oben genannte frage,<br />
bei der ich folgendes brauche:</p>
<blockquote>
<p>Ein Beispiel:</p>
</blockquote>
<p><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="😃"
    /> oder erklärung</p>
</blockquote>
<p>Weitere Erklärung fällt mir nicht ein und das Beispiel wäre schon die fertige Lösung, mag ich heute mal nicht machen.</p>
</blockquote>
<p>ich schreibe eindeutig zu langsam</p>
<p>aber mit meinem ersten prädikat</p>
<pre><code>bool f(int i, int j)
    {
return (i&lt;j);
    }
</code></pre>
<p>dürfte die negation nicht funktionen oder? weils ja auf die funktion zeigt.<br />
aber mit <a class="plugin-mentions-user plugin-mentions-a" href="https://www.c-plusplus.net/forum/uid/28547">@Sone</a> struct-Definition sollte die Negation auch funktioneren, oder?</p>
<p>so jetzt aber wirklich die letzte Antwort für heute. ein auge ist schon zu <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/2326161</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/2326161</guid><dc:creator><![CDATA[ACnut]]></dc:creator><pubDate>Sat, 25 May 2013 21:39:08 GMT</pubDate></item><item><title><![CDATA[Reply to template-Prädikatproblem on Sat, 25 May 2013 22:10:27 GMT]]></title><description><![CDATA[<p>ACnut schrieb:</p>
<blockquote>
<p>volkard schrieb:</p>
<blockquote>
<p>ACnut schrieb:</p>
<blockquote>
<blockquote>
<p>Fein. Da kommt irgendwo if(*a&lt;*b) vor.</p>
</blockquote>
<p>genau und noch mehr :p a&gt;b &amp; a==b</p>
</blockquote>
<p>Du kannst a&gt;b ausdrücken als b&lt;a<br />
Du kannst a&gt;=b ausdrücken als !(a&lt;b)<br />
Du kannst a!=b ausdrücken als a&lt;b || b&lt;a<br />
Und == und &lt;= wirste selber rausfinden.</p>
<p>ACnut schrieb:</p>
<blockquote>
<p>ok eure antworten sind schlüssig, bis auf die oben genannte frage,<br />
bei der ich folgendes brauche:</p>
<blockquote>
<p>Ein Beispiel:</p>
</blockquote>
<p><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="😃"
    /> oder erklärung</p>
</blockquote>
<p>Weitere Erklärung fällt mir nicht ein und das Beispiel wäre schon die fertige Lösung, mag ich heute mal nicht machen.</p>
</blockquote>
<p>ich schreibe eindeutig zu langsam</p>
<p>aber mit meinem ersten prädikat</p>
<pre><code>bool f(int i, int j)
    {
return (i&lt;j);
    }
</code></pre>
<p>dürfte die negation nicht funktionen oder? weils ja auf die funktion zeigt.<br />
aber mit <a class="plugin-mentions-user plugin-mentions-a" href="https://www.c-plusplus.net/forum/uid/28547">@Sone</a> struct-Definition sollte die Negation auch funktioneren, oder?</p>
<p>so jetzt aber wirklich die letzte Antwort für heute. ein auge ist schon zu <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>Hör nicht auf Sone, der ist Templateverliebt. Löse erstmal die Aufgabe vernünftig.</p>
<p>Klar geht das.<br />
Dein Prädikat ist gut.</p>
<p>Du sollst doch nicht das Prädikat negieren, sondern dessen Berechnungsergebnis, den bool.<br />
statt if( a&gt;=b ) schreibe man if( !(a&lt;b) )<br />
Also bei Verwendeung des Prädikats if( !(f(a,b)) )</p>
<p>(Danach kannste Dein Prädikat durch Sones Prädikat austauschen ohne, daß die gesuchte Funktion verändert werden muss, ist aber erstmal eine Unwichtige Spielerei.)</p>
]]></description><link>https://www.c-plusplus.net/forum/post/2326162</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/2326162</guid><dc:creator><![CDATA[volkard]]></dc:creator><pubDate>Sat, 25 May 2013 22:10:27 GMT</pubDate></item><item><title><![CDATA[Reply to template-Prädikatproblem on Sun, 26 May 2013 13:03:11 GMT]]></title><description><![CDATA[<p>und wieder einmal habt ihr mich gerettet<br />
ein bisschen aussagenlogik sollte ich allerdings auch noch üben</p>
<p>gut wann brauch ich die Konstruktion mit dem struct und wieso funktioniert das(müsste statt dem struct nicht class stehen)?</p>
<p>hochachtungsvoll<br />
ACnut</p>
]]></description><link>https://www.c-plusplus.net/forum/post/2326242</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/2326242</guid><dc:creator><![CDATA[ACnut]]></dc:creator><pubDate>Sun, 26 May 2013 13:03:11 GMT</pubDate></item><item><title><![CDATA[Reply to template-Prädikatproblem on Sun, 26 May 2013 13:24:02 GMT]]></title><description><![CDATA[<p>struct und class unterscheiden sich nur in zwei Aspekten:<br />
Bei struct ist defaultmäßig alles im public Bereich, bei class im private und bei der Vererbung ist es defaultmäßig public bei struct und private bei class.<br />
Ansonsten sind sie gleich.<br />
Da bei struct alles public ist, nutzt man sie häufig, wenn man nur Daten speichern will und keine Funktionen braucht (abgesehen von Konstruktoren, Aggregat-Initialisierung ist nciht ganz das Wahre). class nutzt man sobald Kapselung im Spiel ist.<br />
Deshalb kamst du vielleicht zu der fälschlichen, dass man bei struct keine Memberfunktionen haben kann.</p>
]]></description><link>https://www.c-plusplus.net/forum/post/2326249</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/2326249</guid><dc:creator><![CDATA[Nathan]]></dc:creator><pubDate>Sun, 26 May 2013 13:24:02 GMT</pubDate></item><item><title><![CDATA[Reply to template-Prädikatproblem on Sun, 26 May 2013 19:06:18 GMT]]></title><description><![CDATA[<p>wieder was neues gelernt</p>
<p>danke</p>
]]></description><link>https://www.c-plusplus.net/forum/post/2326322</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/2326322</guid><dc:creator><![CDATA[ACnut]]></dc:creator><pubDate>Sun, 26 May 2013 19:06:18 GMT</pubDate></item></channel></rss>