<?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[Simple multiplikations Frage]]></title><description><![CDATA[<p>Hallo zusammen, kann mir einer von euch mal bitte verraten warum folgern quelltext nicht zum gewünschten Ergebnis fürht:</p>
<pre><code>int potenz(int x, int n)
{
	int zahl2 = 1;
	for(int i=0;i&lt;n;i++)
	{
		zahl2*=x;
	}
	return zahl2;
}

void convertHexNumber()
{
	int ergebnis = 0;

	string zahl;
	cout &lt;&lt; &quot;Bitte eine Hex Zahl eingeben: &quot;;
	cin &gt;&gt; hex;
	int index = 0;
        for(int i = hex.length() - 1; i &gt;= 0; i--)
{
........
.......	
ergebnis += potenz(16,index) * hex[i];
}

		index++;
	}
	cout &lt;&lt; &quot;Dezimal Zahl :&quot; &lt;&lt; ergebnis;

}
</code></pre>
<p>so wenn ich nun in der Fkt convertHexNumber die 5 eingebe dann bekomme ich von dieser Rechnung hier das Ergbnis (potenz(16,index) * hex[i]) = 53 und nicht wie gewollt 5. Wenn ich mir die Teilergebnisse ausgeben lasse dann kommt da 1*5 = 53 raus. gut ich dachte mir vielleicht liegts daran das es ein string ist den ich eingebe in der Konsole deshalb hab ich hex[i] mal auf int gecastet mit static_cast&lt;int&gt;(hex[i]) aber auch das hat nichts geholfen?<br />
Kann mir einer bitte sagen wo hier der Fehler liegt, ist bestimmt irgendwas ganz banales, aber ich seh es nicht.<br />
Danke.</p>
]]></description><link>https://www.c-plusplus.net/forum/topic/238082/simple-multiplikations-frage</link><generator>RSS for Node</generator><lastBuildDate>Wed, 23 Sep 2026 05:01:33 GMT</lastBuildDate><atom:link href="https://www.c-plusplus.net/forum/topic/238082.rss" rel="self" type="application/rss+xml"/><pubDate>Mon, 06 Apr 2009 09:57:25 GMT</pubDate><ttl>60</ttl><item><title><![CDATA[Reply to Simple multiplikations Frage on Mon, 06 Apr 2009 09:58:15 GMT]]></title><description><![CDATA[<p>Hallo zusammen, kann mir einer von euch mal bitte verraten warum folgern quelltext nicht zum gewünschten Ergebnis fürht:</p>
<pre><code>int potenz(int x, int n)
{
	int zahl2 = 1;
	for(int i=0;i&lt;n;i++)
	{
		zahl2*=x;
	}
	return zahl2;
}

void convertHexNumber()
{
	int ergebnis = 0;

	string zahl;
	cout &lt;&lt; &quot;Bitte eine Hex Zahl eingeben: &quot;;
	cin &gt;&gt; hex;
	int index = 0;
        for(int i = hex.length() - 1; i &gt;= 0; i--)
{
........
.......	
ergebnis += potenz(16,index) * hex[i];
}

		index++;
	}
	cout &lt;&lt; &quot;Dezimal Zahl :&quot; &lt;&lt; ergebnis;

}
</code></pre>
<p>so wenn ich nun in der Fkt convertHexNumber die 5 eingebe dann bekomme ich von dieser Rechnung hier das Ergbnis (potenz(16,index) * hex[i]) = 53 und nicht wie gewollt 5. Wenn ich mir die Teilergebnisse ausgeben lasse dann kommt da 1*5 = 53 raus. gut ich dachte mir vielleicht liegts daran das es ein string ist den ich eingebe in der Konsole deshalb hab ich hex[i] mal auf int gecastet mit static_cast&lt;int&gt;(hex[i]) aber auch das hat nichts geholfen?<br />
Kann mir einer bitte sagen wo hier der Fehler liegt, ist bestimmt irgendwas ganz banales, aber ich seh es nicht.<br />
Danke.</p>
]]></description><link>https://www.c-plusplus.net/forum/post/1691649</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/1691649</guid><dc:creator><![CDATA[Shaguar]]></dc:creator><pubDate>Mon, 06 Apr 2009 09:58:15 GMT</pubDate></item><item><title><![CDATA[Reply to Simple multiplikations Frage on Mon, 06 Apr 2009 10:10:13 GMT]]></title><description><![CDATA[<p>In den meisten Fällen entspricht <code>'0'</code> nicht 0, sondern dem Wert 48. <code>'5'</code> entspricht meistens dem Wert 53. Meistens daher, weil dazu der ASCII Zeichensatz genommen wird:<br />
<a href="http://de.wikipedia.org/wiki/American_Standard_Code_for_Information_Interchange#ASCII-Tabelle" rel="nofollow">http://de.wikipedia.org/wiki/American_Standard_Code_for_Information_Interchange#ASCII-Tabelle</a></p>
<p>Was hättest du eigentlich erwartet, wenn <code>hex[i]</code> auf einen Buchstaben verwiesen hätte, zum Beispiel <code>'A'</code> ? <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/1691658</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/1691658</guid><dc:creator><![CDATA[Dravere]]></dc:creator><pubDate>Mon, 06 Apr 2009 10:10:13 GMT</pubDate></item><item><title><![CDATA[Reply to Simple multiplikations Frage on Mon, 06 Apr 2009 10:22:32 GMT]]></title><description><![CDATA[<p>ja wo ist dann genau der Fehler?<br />
Also ebtspricht mein Ergebnis 5 dem Ascii zeichen 53, und deshalb gibt er das aus? Wie mache ich es denn das dann auch die 5 stehen bleibt?</p>
]]></description><link>https://www.c-plusplus.net/forum/post/1691665</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/1691665</guid><dc:creator><![CDATA[Shaguar]]></dc:creator><pubDate>Mon, 06 Apr 2009 10:22:32 GMT</pubDate></item><item><title><![CDATA[Reply to Simple multiplikations Frage on Mon, 06 Apr 2009 10:33:17 GMT]]></title><description><![CDATA[<p>Shaguar schrieb:</p>
<blockquote>
<p>ja wo ist dann genau der Fehler?</p>
</blockquote>
<p>Der Fehler ist, dass du annimmst, dass '5' gleich 5 ist. Dem ist aber nicht der Fall. Das Zeichen 5 hat meistens in den verschiedenen Zeichensätzen nicht den Wert 5. Unter ASCII entspricht das Zeichen 5 eben dem Wert 53.</p>
<p>Shaguar schrieb:</p>
<blockquote>
<p>Also ebtspricht mein Ergebnis 5 dem Ascii zeichen 53, und deshalb gibt er das aus? Wie mache ich es denn das dann auch die 5 stehen bleibt?</p>
</blockquote>
<p>Die Sache zuerst umwandeln?<br />
Allerdings gibt es für das Einlesen von Hexadezimalziffern gleich C++ Funktionen:</p>
<pre><code class="language-cpp">#include &lt;iostream&gt;

int main()
{
  long hex;
  std::cout &lt;&lt; &quot;Hexzahl eingeben: &quot;
  std::cout.flush();

  while(!(std::cin &gt;&gt; std::hex &gt;&gt; hex))
  {
    std::cout &lt;&lt; &quot;Eingabe ungültig!\n&quot;
                 &quot;Probieren sie es erneut: &quot;;

    std::cin.clear();
    std::cin.ignore(std::cin.rdbuf()-&gt;in_avail());

    std::cout.flush();
  }

  return 0;
}
</code></pre>
<p>Referenz: <a href="http://www.cplusplus.com/reference/" rel="nofollow">http://www.cplusplus.com/reference/</a></p>
<p>Falls du es selber machen willst, dann würde sich vielleicht ein switch-statement anbieten:</p>
<pre><code class="language-cpp">switch(hex[i])
{
case '0' :
  // ...
  break;
case '1' :
  // ...
  break;

/* ... */

case 'E' :
case 'e' :
  // ...
  break;
case 'F' :
case 'f' :
  // ...
  break;
default :
  // ...
}
</code></pre>
<p>Oder falls du dich darauf verlassen kannst, dass es sich um ein ASCII Zeichensatz handelt, dann wäre auch die Subtraktion eine Idee:</p>
<pre><code class="language-cpp">if(hex[i] &gt;= '0' &amp;&amp; hex[i] &lt;= '9')
{
  value = hex[i] - '0';
}
else if(hex[i] &gt;= 'A' &amp;&amp; hex[i] &lt;= 'F')
{
  value = hex[i] - 'A' + 10;
}
else
{
  // Fehler?
}
</code></pre>
<p>Grüssli</p>
]]></description><link>https://www.c-plusplus.net/forum/post/1691678</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/1691678</guid><dc:creator><![CDATA[Dravere]]></dc:creator><pubDate>Mon, 06 Apr 2009 10:33:17 GMT</pubDate></item><item><title><![CDATA[Reply to Simple multiplikations Frage on Mon, 06 Apr 2009 10:34:18 GMT]]></title><description><![CDATA[<p>Ist das hier Absicht?</p>
<pre><code class="language-cpp">string zahl;
</code></pre>
<pre><code class="language-cpp">cin &gt;&gt; hex;
</code></pre>
<pre><code class="language-cpp">void convertHexNumber()
{
    int ergebnis = 0;

    string zahl;
    cout &lt;&lt; &quot;Bitte eine Hex Zahl eingeben: &quot;;
    cin &gt;&gt; hex;
    int index = 0;
        for(int i = hex.length() - 1; i &gt;= 0; i--)
{
</code></pre>
]]></description><link>https://www.c-plusplus.net/forum/post/1691680</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/1691680</guid><dc:creator><![CDATA[EEK@work]]></dc:creator><pubDate>Mon, 06 Apr 2009 10:34:18 GMT</pubDate></item><item><title><![CDATA[Reply to Simple multiplikations Frage on Mon, 06 Apr 2009 10:40:08 GMT]]></title><description><![CDATA[<p>ups, ne das is keine absicht, aber das steht auch nur hier im forum, bei mir im Quelltext hab ich das schon richtig stehen.<br />
Aber ich werd jetzt erstmal die verschiedenen Möglichkeiten durchprobieren.<br />
Danke erstmal.</p>
]]></description><link>https://www.c-plusplus.net/forum/post/1691684</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/1691684</guid><dc:creator><![CDATA[Shaguar]]></dc:creator><pubDate>Mon, 06 Apr 2009 10:40:08 GMT</pubDate></item></channel></rss>