<?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[Eine etwas andere Fallunterscheidung]]></title><description><![CDATA[<p>Hallo!</p>
<p>Ich versuche gerade eine Fallunterscheidung in C++ zu implementieren. Diese soll folgendermaßen arbeiten:</p>
<p>1. Ich habe einen Integer.<br />
2. Dieser Integer wird jetzt in eine Hexadezimalzahl (achtstellig, mit führenden Nullen) umgerechnet.<br />
3. Anhand der einzelnen hexadezimalen Ziffern wird jetzt die Fallunterscheidung durchgeführt.</p>
<p>Ist beispielsweise die achte hexadezimale Ziffer nun eine 3 wird dieses getan, ist die siebte Hex-Ziffer ein &quot;F&quot;, wird etwas anderes getan und so weiter...</p>
<p>Wie würdet ihr so eine Fallunterscheidung am besten implementieren? Ich habe bisher versucht, die Dezimalzahl mit sprintf in einen String zu konvertieren, der dann die Hex-Zahl beeinhaltet. Anschließend habe ich die weiteren Verzweigungen mit einzelnen If-Anweisungen machen wollen. Leider funktioniert das an diversen Stellen bei mir nicht... mal passen sprintf die Typen nicht, mal funktionieren die if-Vergleiche nicht...<br />
Bei mir sieht das bisher in etwa so aus:</p>
<pre><code>int    Decimal;	
char   Hexadecimal[8];

cin &gt;&gt; Decimal;

    // Dezimalzahl in achtstellige HEX-Zahl umwandeln
    sprintf (Hexadecimal, &quot;%08X&quot;, Decimal);

    // HEX-Zahl analysieren und entscheiden
    if (strcmp(&amp;Hexadecimal[7],&quot;3&quot;)==0){/* tu jenes*/}
    if (strcmp(&amp;Hexadecimal[6],&quot;F&quot;)==0){/* tu dieses*/}
    ...
</code></pre>
<p>Vielen Dank schonmal für alles</p>
<p>the_viewer</p>
]]></description><link>https://www.c-plusplus.net/forum/topic/269420/eine-etwas-andere-fallunterscheidung</link><generator>RSS for Node</generator><lastBuildDate>Mon, 31 Aug 2026 06:53:32 GMT</lastBuildDate><atom:link href="https://www.c-plusplus.net/forum/topic/269420.rss" rel="self" type="application/rss+xml"/><pubDate>Thu, 24 Jun 2010 15:58:12 GMT</pubDate><ttl>60</ttl><item><title><![CDATA[Reply to Eine etwas andere Fallunterscheidung on Thu, 24 Jun 2010 15:58:12 GMT]]></title><description><![CDATA[<p>Hallo!</p>
<p>Ich versuche gerade eine Fallunterscheidung in C++ zu implementieren. Diese soll folgendermaßen arbeiten:</p>
<p>1. Ich habe einen Integer.<br />
2. Dieser Integer wird jetzt in eine Hexadezimalzahl (achtstellig, mit führenden Nullen) umgerechnet.<br />
3. Anhand der einzelnen hexadezimalen Ziffern wird jetzt die Fallunterscheidung durchgeführt.</p>
<p>Ist beispielsweise die achte hexadezimale Ziffer nun eine 3 wird dieses getan, ist die siebte Hex-Ziffer ein &quot;F&quot;, wird etwas anderes getan und so weiter...</p>
<p>Wie würdet ihr so eine Fallunterscheidung am besten implementieren? Ich habe bisher versucht, die Dezimalzahl mit sprintf in einen String zu konvertieren, der dann die Hex-Zahl beeinhaltet. Anschließend habe ich die weiteren Verzweigungen mit einzelnen If-Anweisungen machen wollen. Leider funktioniert das an diversen Stellen bei mir nicht... mal passen sprintf die Typen nicht, mal funktionieren die if-Vergleiche nicht...<br />
Bei mir sieht das bisher in etwa so aus:</p>
<pre><code>int    Decimal;	
char   Hexadecimal[8];

cin &gt;&gt; Decimal;

    // Dezimalzahl in achtstellige HEX-Zahl umwandeln
    sprintf (Hexadecimal, &quot;%08X&quot;, Decimal);

    // HEX-Zahl analysieren und entscheiden
    if (strcmp(&amp;Hexadecimal[7],&quot;3&quot;)==0){/* tu jenes*/}
    if (strcmp(&amp;Hexadecimal[6],&quot;F&quot;)==0){/* tu dieses*/}
    ...
</code></pre>
<p>Vielen Dank schonmal für alles</p>
<p>the_viewer</p>
]]></description><link>https://www.c-plusplus.net/forum/post/1916882</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/1916882</guid><dc:creator><![CDATA[the_viewer]]></dc:creator><pubDate>Thu, 24 Jun 2010 15:58:12 GMT</pubDate></item><item><title><![CDATA[Reply to Eine etwas andere Fallunterscheidung on Thu, 24 Jun 2010 16:14:42 GMT]]></title><description><![CDATA[<p>Ziffern von klein nach groß gezählt, bei 0 anfangend:</p>
<pre><code class="language-cpp">unsigned hex_ziffer(unsigned x, unsigned stelle) {
  return (x &gt;&gt; 4 * stelle) &amp; 15;
}
</code></pre>
<p>Dann entsprechend</p>
<pre><code class="language-cpp">if(hex_ziffer(Decimal, 2) == 15) { /* tu dieses */ }
</code></pre>
]]></description><link>https://www.c-plusplus.net/forum/post/1916894</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/1916894</guid><dc:creator><![CDATA[seldon]]></dc:creator><pubDate>Thu, 24 Jun 2010 16:14:42 GMT</pubDate></item><item><title><![CDATA[Reply to Eine etwas andere Fallunterscheidung on Thu, 24 Jun 2010 16:15:07 GMT]]></title><description><![CDATA[<pre><code class="language-cpp">#include &lt;iostream&gt;
#include &lt;sstream&gt;

int main()
{
    unsigned int decimal;
    std::cin &gt;&gt; dezcimal;

    std::stringstream Str;
    Str &lt;&lt; std::hex &lt;&lt; decimal;

    std::string meineHexZahl = Str.str();

    if( meineHexZahl[2] == '7' )
       std::cout &lt;&lt; &quot;An der dritten Stelle befindet sich eine Sieben&quot; &lt;&lt; std::endl;

    cin.get();
}
</code></pre>
]]></description><link>https://www.c-plusplus.net/forum/post/1916896</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/1916896</guid><dc:creator><![CDATA[asdfasd]]></dc:creator><pubDate>Thu, 24 Jun 2010 16:15:07 GMT</pubDate></item></channel></rss>