<?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[[gelöst] Mit | (Pipe) zusammen und wieder auseinander...]]></title><description><![CDATA[<p>Hallo,</p>
<p>ich schreibe gerade ein Musikerprogramm für den Eigenbedarf, vorwiegend ist es mein Lernprojekt, damit ich die verschiedenen Techniken in C++ erlerne.</p>
<p>Da ich vermute, dass nicht jeder Musiker ist, eine kleine Grundtheoriestunde:<br />
In der Musik ist es so, dass oftmals mit Akkorden und Akkordsymbolen gearbeitet wird. Ein Akkord kann C, D, E, F... sein. Jeder Akkord hat noch eine &quot;Eigenschaft&quot;, welche Dur, Moll, Übermäßig oder Vermindert ist. Und zusätzlich kann jeder Akkord noch Farbnoten enthalten, z.B. 7, 9, 11 usw..</p>
<p>Beispiele:<br />
C-Dur<br />
E-Moll-7<br />
F-Moll-7-b5<br />
usw...</p>
<p>Jetzt will ich das ganze jetzt in C++-Form für eine Funktion basteln:</p>
<pre><code>enum Akkorde{
 C, D, E, F, G, A, H
}
enum AkkEig {
  DUR, MOLL, UEBER, VERM
}
void setAkkord(Akkorde ak, AkkEig eig, unsigned int farbnoten = 0);

main()
{
  setAkkord(C, DUR); // C-Dur
  setAkkord(E, MOLL, SEPT); // E-Moll-7
  setAkkord(F, MOLL, SEPT | bFUENF); // F-Moll-7-b5
}
</code></pre>
<p>Der Code kann so nicht ganz klappen, aber es soll zeigen was ich vor habe. Ich würde gerne die verschiedenen Farbnoten (da Mehrfachnennung möglich) mit einer Pipe zusammen führen, wie man das ja an jeder C++-Ecke sieht. Ich bin aber schon gar nicht sicher, wie ich diese als Anlegen muss. So wie ich das nach Linux-Rechtesystem verstehen, muss ich dann so was machen wie:</p>
<pre><code>enum FarbNoten {
  bFUENF = 1,
  SEPT = 2,
  NEUN = 4,
  ELF = 8,
  DREIZEHN = 16
}
</code></pre>
<p>richtig?</p>
<p>Aber mein Hauptproblem kommt dann noch: Ich bekomme in meiner Funktion einen Wert zurück, wie weiß ich, welche FarbNoten da jetzt drinnen sind?</p>
<p>Ich hoffe ich konnte mein Problem beschreiben.<br />
Danke für die Hilfe bei einem NewBe(e),<br />
Stefan</p>
]]></description><link>https://www.c-plusplus.net/forum/topic/240585/gelöst-mit-pipe-zusammen-und-wieder-auseinander</link><generator>RSS for Node</generator><lastBuildDate>Mon, 21 Sep 2026 12:35:35 GMT</lastBuildDate><atom:link href="https://www.c-plusplus.net/forum/topic/240585.rss" rel="self" type="application/rss+xml"/><pubDate>Fri, 08 May 2009 13:21:41 GMT</pubDate><ttl>60</ttl><item><title><![CDATA[Reply to [gelöst] Mit | (Pipe) zusammen und wieder auseinander... on Fri, 08 May 2009 13:53:20 GMT]]></title><description><![CDATA[<p>Hallo,</p>
<p>ich schreibe gerade ein Musikerprogramm für den Eigenbedarf, vorwiegend ist es mein Lernprojekt, damit ich die verschiedenen Techniken in C++ erlerne.</p>
<p>Da ich vermute, dass nicht jeder Musiker ist, eine kleine Grundtheoriestunde:<br />
In der Musik ist es so, dass oftmals mit Akkorden und Akkordsymbolen gearbeitet wird. Ein Akkord kann C, D, E, F... sein. Jeder Akkord hat noch eine &quot;Eigenschaft&quot;, welche Dur, Moll, Übermäßig oder Vermindert ist. Und zusätzlich kann jeder Akkord noch Farbnoten enthalten, z.B. 7, 9, 11 usw..</p>
<p>Beispiele:<br />
C-Dur<br />
E-Moll-7<br />
F-Moll-7-b5<br />
usw...</p>
<p>Jetzt will ich das ganze jetzt in C++-Form für eine Funktion basteln:</p>
<pre><code>enum Akkorde{
 C, D, E, F, G, A, H
}
enum AkkEig {
  DUR, MOLL, UEBER, VERM
}
void setAkkord(Akkorde ak, AkkEig eig, unsigned int farbnoten = 0);

main()
{
  setAkkord(C, DUR); // C-Dur
  setAkkord(E, MOLL, SEPT); // E-Moll-7
  setAkkord(F, MOLL, SEPT | bFUENF); // F-Moll-7-b5
}
</code></pre>
<p>Der Code kann so nicht ganz klappen, aber es soll zeigen was ich vor habe. Ich würde gerne die verschiedenen Farbnoten (da Mehrfachnennung möglich) mit einer Pipe zusammen führen, wie man das ja an jeder C++-Ecke sieht. Ich bin aber schon gar nicht sicher, wie ich diese als Anlegen muss. So wie ich das nach Linux-Rechtesystem verstehen, muss ich dann so was machen wie:</p>
<pre><code>enum FarbNoten {
  bFUENF = 1,
  SEPT = 2,
  NEUN = 4,
  ELF = 8,
  DREIZEHN = 16
}
</code></pre>
<p>richtig?</p>
<p>Aber mein Hauptproblem kommt dann noch: Ich bekomme in meiner Funktion einen Wert zurück, wie weiß ich, welche FarbNoten da jetzt drinnen sind?</p>
<p>Ich hoffe ich konnte mein Problem beschreiben.<br />
Danke für die Hilfe bei einem NewBe(e),<br />
Stefan</p>
]]></description><link>https://www.c-plusplus.net/forum/post/1707777</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/1707777</guid><dc:creator><![CDATA[stefanjann]]></dc:creator><pubDate>Fri, 08 May 2009 13:53:20 GMT</pubDate></item><item><title><![CDATA[Reply to [gelöst] Mit | (Pipe) zusammen und wieder auseinander... on Fri, 08 May 2009 13:44:47 GMT]]></title><description><![CDATA[<p>Also das ist soweit schon ganz gut was du gemacht hast <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 />
Abfragen kannst du es so:</p>
<pre><code class="language-cpp">void setAkkord(Akkorde ak, AkkEig eig, unsigned int farbnoten = 0) {
    // ... irgendwas

    // Abfragen, welche Farbnoten gewählt wurden
    if (farbnoten &amp; bFUENF)
        // ... bFUENF gesetzt

    if (farbnoten &amp; SEPT)
        // ... SEPT gesetzt

    // ... usw
}
</code></pre>
<p>Das ganze funktioniert recht einfach:<br />
der &amp;-Operator lässt als Wert nur die Bits durch, die sowohl in der einen, als auch in der anderen Variable gesetzt sind.</p>
<p>also zum Beispiel schaut das Bitmuster für einen solchen Aufruf so aus:<br />
<code>Aufruf mit (SEPT | bFUENF): farbnoten = 0000 0000 0000 0011</code><br />
Der Operator &amp; erhält als zweiten Wert zum Beispiel SEPT.<br />
<code>SEPT hat das Bitmuster 0000 0000 0000 0010</code></p>
<p>Wenn als Ergebnis nun also 0 rauskommt, bedeutet das, dass SEPT nicht gesetzt ist. Ansonsten schon.</p>
]]></description><link>https://www.c-plusplus.net/forum/post/1707794</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/1707794</guid><dc:creator><![CDATA[[[global:guest]]]]></dc:creator><pubDate>Fri, 08 May 2009 13:44:47 GMT</pubDate></item><item><title><![CDATA[Reply to [gelöst] Mit | (Pipe) zusammen und wieder auseinander... on Fri, 08 May 2009 13:48:29 GMT]]></title><description><![CDATA[<p>Super,<br />
Danke,<br />
das geht. Ich hab mir auch gleich mal mein Handbuch zum &amp;-Operator rausgesucht. Da ist es noch zusätzlich gut beschrieben. (C++ von A bis Z, Jürgen Wolf).</p>
<p>Gruß,<br />
Stefan</p>
]]></description><link>https://www.c-plusplus.net/forum/post/1707796</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/1707796</guid><dc:creator><![CDATA[stefanjann]]></dc:creator><pubDate>Fri, 08 May 2009 13:48:29 GMT</pubDate></item><item><title><![CDATA[Reply to [gelöst] Mit | (Pipe) zusammen und wieder auseinander... on Fri, 08 May 2009 13:51:09 GMT]]></title><description><![CDATA[<p>stefanjann schrieb:</p>
<blockquote>
<p>C++ von A bis Z, Jürgen Wolf</p>
</blockquote>
<p>Ja das Buch habe ich auch!<br />
Und ich finde es seeeehr nützlich, weil man eben nicht alles immer im Kopf hat und darin eben fast alles wichtige steht...</p>
]]></description><link>https://www.c-plusplus.net/forum/post/1707799</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/1707799</guid><dc:creator><![CDATA[[[global:guest]]]]></dc:creator><pubDate>Fri, 08 May 2009 13:51:09 GMT</pubDate></item><item><title><![CDATA[Reply to [gelöst] Mit | (Pipe) zusammen und wieder auseinander... on Fri, 08 May 2009 13:53:53 GMT]]></title><description><![CDATA[<p>daersc schrieb:</p>
<blockquote>
<p>Und ich finde es seeeehr nützlich, weil man eben nicht alles immer im Kopf hat und darin eben fast alles wichtige steht...</p>
</blockquote>
<p>Ehm, sollte diese Anforderung nicht jedes gute C++ Buch erfüllen? <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>
<p>Als Referenz verwende ich allerdings lieber:<br />
<a href="http://www.cplusplus.com/reference/" rel="nofollow">http://www.cplusplus.com/reference/</a></p>
<p>Geht schneller <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>Grüssli</p>
]]></description><link>https://www.c-plusplus.net/forum/post/1707801</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/1707801</guid><dc:creator><![CDATA[Dravere]]></dc:creator><pubDate>Fri, 08 May 2009 13:53:53 GMT</pubDate></item><item><title><![CDATA[Reply to [gelöst] Mit | (Pipe) zusammen und wieder auseinander... on Fri, 08 May 2009 13:57:23 GMT]]></title><description><![CDATA[<p>Im &quot;C++ von A bis Z&quot; stehen allerdings auch noch nützliche Tutorials z.B. zur Netzwerkprogrammierung oder zu wxWidgets. Es ist für mich viel mehr als nur eine Referenz. Besonders, weil ich mich immer noch als Anfänger sehen.</p>
]]></description><link>https://www.c-plusplus.net/forum/post/1707804</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/1707804</guid><dc:creator><![CDATA[stefanjann]]></dc:creator><pubDate>Fri, 08 May 2009 13:57:23 GMT</pubDate></item><item><title><![CDATA[Reply to [gelöst] Mit | (Pipe) zusammen und wieder auseinander... on Fri, 08 May 2009 14:54:36 GMT]]></title><description><![CDATA[<p>Was hat Netzwerkprogrammierung oder wxWidgets mit C++ zu tun? Das halte ich eher für einen negativen Punkt. C++ ist schon komplex genug und die Netzwerkprogrammierung oder wxWidgets können eigene Bücher füllen. Sowas halte ich eher für verkehrt.<br />
Vor allem nimmt mich dann auch wunder, womit die Netzwerkprogrammierung durchgeführt wird. Die Bibliothekwahl halte ich da für sehr heikel. Auch die Verwendung von wxWidgets halte ich nicht für eine gute Idee. wxWidgets hat ein grauenhaftes C++. Kein Anfänger sollte sich so ein C++ angewöhnen.</p>
<p>Ich habe zum Teil heute noch Probleme, weil ich damals mit der MFC eingestiegen bin. Das Buch, das musste ich im nachhinein feststellen, als ich reine C++ Bücher gelesen habe, war völliger Scheiss. Der Sprache C++ wurde viel zu wenig Aufmerksamkeit geschenkt, da noch die Informationen über die MFC ins Buch mussten. Die MFC hat zudem auch ein sehr schlechtes C++, wodurch ich mir völlig falsche Dinge angewöhnt habe.</p>
<p>Grüssli</p>
]]></description><link>https://www.c-plusplus.net/forum/post/1707826</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/1707826</guid><dc:creator><![CDATA[Dravere]]></dc:creator><pubDate>Fri, 08 May 2009 14:54:36 GMT</pubDate></item><item><title><![CDATA[Reply to [gelöst] Mit | (Pipe) zusammen und wieder auseinander... on Tue, 19 May 2009 14:18:42 GMT]]></title><description><![CDATA[<p>Hallo,</p>
<p>das ganze funktioniert perfekt und erfüllt genau meine Zwecke. Jetzt ne Frage nochmal zum Thema:</p>
<pre><code>enum Farbnoten {
  Sieben = 1,
  MajorSieben = 2,
  Neun = 4,
  Elf =7
};
</code></pre>
<p>Jetzt bräöuchte ich noch ein MajorNeun, welches ein MajorSieben | Neun ist.<br />
Kann ich das dann</p>
<pre><code>enum Farbnoten {
  Sieben = 1,
  MajorSieben = 2,
  Neun = 4,
  MajorNeun = 6, // MajorSieben | Neun
  Elf = 7
};
</code></pre>
<p>eintragen? Die Tests sagen, das geht, allerdings hätte ich gerne noch von jemanden ein &quot;das ist richtig, so gehts&quot;, da ich mich immer noch als Newbe(e) ansehe.</p>
<p>Danke.</p>
]]></description><link>https://www.c-plusplus.net/forum/post/1712823</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/1712823</guid><dc:creator><![CDATA[stefanjann]]></dc:creator><pubDate>Tue, 19 May 2009 14:18:42 GMT</pubDate></item><item><title><![CDATA[Reply to [gelöst] Mit | (Pipe) zusammen und wieder auseinander... on Tue, 19 May 2009 14:23:00 GMT]]></title><description><![CDATA[<p>Ja und du kannst sogar direkt schreiben:</p>
<pre><code class="language-cpp">enum Farbnoten { 
  Sieben = 1, 
  MajorSieben = 2, 
  Neun = 4, 
  MajorNeun = MajorSieben | Neun,
  Elf = 7 
};
</code></pre>
<p>Grüssli <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/1712830</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/1712830</guid><dc:creator><![CDATA[Dravere]]></dc:creator><pubDate>Tue, 19 May 2009 14:23:00 GMT</pubDate></item></channel></rss>